REACT查询:删除React Native Thr中的Quermeries

发布于 2025-02-09 02:06:18 字数 2184 浏览 1 评论 0原文

我正在尝试使用REC中的RQ(RN)中的RQ,并尝试遵循推荐的remove quercleies(),如 https://stackoverflow.com/a/67635388/618099

export default () => {
  const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>()
  const { setCurrentPortfolioId } = useCurrentPortfolio()
  const { removeQueries } = useQueryClient()

  const clearMemory = async () => {
    setCurrentPortfolioId(null)
    try {
      removeQueries()
    } catch (error) {
      console.log(error)
    }
    await setTimeout(() => {}, 1000)

    await SecureStore.deleteItemAsync('EMAIL')
    await SecureStore.deleteItemAsync('PASSWORD')

    navigation.replace('SignIn')
  }
  return (
    <SafeAreaView style={styles.container}>
      <Button onPress={clearMemory} label="LOG UD" />
    </SafeAreaView>
  )
}

但是它只是抛出的

undefined is not an object (evaluating 'this.queryCache')
at node_modules/react-query/lib/core/queryClient.js:122:21 in removeQueries

人是否对我做错了什么有所了解?


(是的,应用程序屏幕包裹在QueryClientProvider中)

function onAppStateChange(status: AppStateStatus) {
  // React Query already supports in web browser refetch on window focus by default
  if (Platform.OS !== 'web') focusManager.setFocused(status === 'active')
}

export const queryClient = new QueryClient({
  defaultOptions: { queries: { retry: 2, cacheTime: 1000 } },
})

export default function App() {
  const isLoadingComplete = useCachedResources()
  useOnlineManager()

  useAppState(onAppStateChange)

  if (!isLoadingComplete) return null

  return (
    <SafeAreaProvider initialMetrics={initialWindowMetrics}>
      <StatusBar style="light" />
      <QueryClientProvider client={queryClient}>
        <CredentialsContextProvider>
          <CurrentPortfolioContextProvider>
            <Navigation />
          </CurrentPortfolioContextProvider>
        </CredentialsContextProvider>
      </QueryClientProvider>
    </SafeAreaProvider>
  )
}

I'm trying to use RQ in react native (RN) and tried to follow the recommended removeQueries() as suggested in https://stackoverflow.com/a/67635388/618099

export default () => {
  const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>()
  const { setCurrentPortfolioId } = useCurrentPortfolio()
  const { removeQueries } = useQueryClient()

  const clearMemory = async () => {
    setCurrentPortfolioId(null)
    try {
      removeQueries()
    } catch (error) {
      console.log(error)
    }
    await setTimeout(() => {}, 1000)

    await SecureStore.deleteItemAsync('EMAIL')
    await SecureStore.deleteItemAsync('PASSWORD')

    navigation.replace('SignIn')
  }
  return (
    <SafeAreaView style={styles.container}>
      <Button onPress={clearMemory} label="LOG UD" />
    </SafeAreaView>
  )
}

but it just throws

undefined is not an object (evaluating 'this.queryCache')
at node_modules/react-query/lib/core/queryClient.js:122:21 in removeQueries

does anyone have an idea of what I'm doing wrong?


(yes, the app screens are wrapped in a queryClientProvider)

function onAppStateChange(status: AppStateStatus) {
  // React Query already supports in web browser refetch on window focus by default
  if (Platform.OS !== 'web') focusManager.setFocused(status === 'active')
}

export const queryClient = new QueryClient({
  defaultOptions: { queries: { retry: 2, cacheTime: 1000 } },
})

export default function App() {
  const isLoadingComplete = useCachedResources()
  useOnlineManager()

  useAppState(onAppStateChange)

  if (!isLoadingComplete) return null

  return (
    <SafeAreaProvider initialMetrics={initialWindowMetrics}>
      <StatusBar style="light" />
      <QueryClientProvider client={queryClient}>
        <CredentialsContextProvider>
          <CurrentPortfolioContextProvider>
            <Navigation />
          </CurrentPortfolioContextProvider>
        </CredentialsContextProvider>
      </QueryClientProvider>
    </SafeAreaProvider>
  )
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

内心荒芜 2025-02-16 02:06:19

它是因为它是一堂课。因此,必须像queryclient.removequeries()一样被称为

- 以某种方式我删除了登录请求而不注意到它 - 因此,它是用错误的凭据请求它的

凭据

It throws because it's a class. So has to be called like queryClient.removeQueries()

figured it out - somehow I deleted the sign out request without noticing it - so it was requesting it with the wrong credentials ????‍♂️

leaving this answer in case it helps others

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文