【发布时间】:2022-06-12 13:26:00
【问题描述】:
我目前有这段代码。
const initialState = documentsAdapter.getInitialState()
export const setupsApiSlice = apiSlice.injectEndpoints({
tagTypes: ['Setup'],
endpoints: builder => ({
getSetups: builder.query({
query: (documentId) => ({
url: `/documents/${documentId}/setups`,
method: 'GET'
}),
providesTags: ['Setup']
}),
})
})
export const {
useGetSetupsQuery,
useAddSetupsMutation,
useUpdateSetupsMutation,
useDeleteSetupsMutation
} = apiSlice
现在我想利用 getSelector 并执行类似的操作(未实现)。
export const selectSetupsResult = setupsApiSlice.endpoints.getSetups.select()
// Creates memoized selector
const selectSetupsData = createSelector(
selectSetupsResult,
setupsResult => setupsResult.data // normalized state object with ids & entities
)
export const {
selectAll: selectAllSetups,
selectById: selectSetupById,
selectIds: selectSetupIds,
} = setupsAdapter.getSelectors(state => selectSetupsData(state) ?? initialState)
我遇到的问题是 endpoint.select() 在我的情况下需要一个参数,以便我可以在正确的 documentId 上调用设置。我知道我可以调用所有设置,然后过滤掉具有相同 documentId 的设置,但我想知道是否还有其他方法。即使这意味着不调用 endpoints.select() 并且仍然能够使用 getSelectors()。
【问题讨论】:
标签: react-redux redux-toolkit rtk-query