0

我在我的反应原生项目中使用 Redux RTK 查询,我无法弄清楚如何在不每次触发查询的情况下访问状态。

我用我的创建了一个 apicustomBaseQuery

const emptySplitApi = createApi({
  reducerPath: 'api',
  baseQuery: customBaseQuery(),
  endpoints: () => ({})
})

然后我注入了我的端点。

export const userApi = emptySplitApi.injectEndpoints({
  endpoints: (builder) => ({
    getUser: builder.query<User, GetUserInput>({
      query: (options) => ({
        query: getUserQuery,
        options: options
      })
    })
  }),
  overrideExisting: true
})

并配置了商店:

const persistConfig = {
  key: 'root',
  storage: AsyncStorage
}

const reducers = combineReducers({
  [emptySplitApi.reducerPath]: emptySplitApi.reducer
})

const persistedReducer = persistReducer(persistConfig, reducers)

export const store = configureStore({
  reducer: persistedReducer,
  middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: false }).concat(emptySplitApi.middleware)
})

当我打开应用程序时,我使用 redux 生成的钩子调用 getUser API。这有效,我得到了预期的响应。

const { data } = useGetUserQuery(input)

现在,我需要在我的应用程序的另一个屏幕中访问用户数据,而无需再次调用 API(redux 应该已缓存/持久化数据)但我无法访问状态。

我尝试了以下方法:

const { getUser } = useAppSelector((state) => state.api.queries)

getUser始终未定义。但是,如果我打印整个state数据,我可以看到数据。如何在不再次调用 API 的情况下从应用程序的任何位置访问状态?

4

1 回答 1

1

useGetUserQuery(yourOptions)随处使用你的。无论您使用多少次,它只会向服务器发出一个请求,并且数据将随处可用。

于 2021-10-23T08:25:03.423 回答