我想从商店获取值,因为登录时我将令牌存储在
state.userDetails
中。
在另一个切片中我需要获取令牌
export const organizationApiSlice = apiSlice.injectEndpoints({
endpoints: (builder) => ({
getOrgInventory: builder.query({
query: (id) => ({
url: `${ORGANIZATION_URL}/${id}/inventory`,
headers: {
"Content-Type": "application/json",
Authorization:
"Bearer GETTOKENHERE",
},
}),
keepUnusedDataFor: 4,
}),
}),
});
我怎样才能获得这个injectEndPoints内的状态?
我的 apiSlice 是这样的。
export const apiSlice = createApi({
baseQuery,
tagTypes: ["User", "Organization", "Inventory", 'Item'],
endpoints: (builder) => ({}),
});
你读过
fetchBaseQuery
的prepareHeaders
吗?
设置请求的默认标头。这就是这样做的目的,而不是在每一个
query
。
import { fetchBaseQuery } from '@reduxjs/toolkit/query'
import type { RootState } from './store'
const baseQuery = fetchBaseQuery({
baseUrl: '/',
prepareHeaders: (headers, { getState }) => {
const token = (getState() as RootState).auth.token
// If we have a token set in state, let's assume that we should be passing it.
if (token) {
headers.set('authorization', `Bearer ${token}`)
}
return headers
},
})