我有一个React Native应用程序,我目前正在配置它,以便使用我的API从数据库中获取和改变数据。具体来说,我使用react redux toolkit中的createApi()
来实现这一点。
在这一点上我只有
- 一个突变来获得一个令牌
- 用于获取用户信息的查询,其使用所述令牌
我目前正在尝试在另一个令牌发生变化时(因为可能是新用户登录)使缓存的用户信息无效。当然,最终会有一个中途注销,但现在这是我的目标。
这是我的API服务的代码:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import * as SecureStore from 'expo-secure-store';
export const myApi = createApi({
reducerPath: 'myApi',
baseQuery: fetchBaseQuery({
baseUrl: 'http://myApiServerUrl/api/',
tagTypes: ['User'],
prepareHeaders: async (headers) => {
headers.set('content-type', 'application/json');
const token = await SecureStore.getItemAsync('access_token');
if (token) {
headers.set('authorization', token);
}
return headers;
}
}),
endpoints: (builder) => ({
getToken: builder.mutation({
query: (body) => ({
url: 'token',
method: 'POST',
body,
}),
invalidatesTags: [{type: 'User', id: 'me'}]
}),
getMe: builder.query({
query: () => `user/me`,
providesTags: (result) => (result ? [{type: 'User', id: 'me'}] : [])
}),
})
})
export const { useGetTokenMutation, useGetMeQuery } = myApi;
字符串
这真的工作!但我得到了以下错误:
ERROR Tag type 'User' was used, but not specified in `tagTypes`!
型
你们知道我做错了什么吗?看起来标签的定义是完全正确的。
1条答案
按热度按时间jckbn6z71#
显然我只是定义错了。
tagTypes
参数将被定义在createApi
输入对象上,而不是我放置它的地方。因此,第一行代码
字符串
应该是
型
这个确实有效