我在react native项目中使用Redux RTK查询,我不知道如何在每次不触发查询的情况下访问状态。
我用我的customBaseQuery
创建了一个api
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 ?
只要在任何地方使用你的useGetUserQuery(yourOptions)
。无论您使用它多少次,它将只向服务器发出一个请求,并且数据将在任何地方可用。