我想要一个 Redux Saga 效果创建器,它只接受模式中第一个已调度的 action,而忽略其余的。我该如何创建它?例如,Saga文档解释了如何takeEvery
创建它。我会在我的应用中运行的 Saga 函数中写一些类似的东西:
function* mySaga() {
takeOne("one_time_action", someSaga);
}
我是 React Redux 的新手。你能告诉我如何手动编写下面的saveUserFilter函数吗?我不想再使用redux-persist-transform-filter 了,因为它使用了 lodash.set,而 lodash.set 容易受到原型污染。
const saveUserFilter = createFilter('user', [
'username',
'displayName',
'timeZone',
])
const persistConfig = {
key: KEY,
storage,
whitelist: [
'user',
'timeZones',
],
transforms: [ saveUserFilter ],
}
我在我的项目中成功使用 RTK 查询,但我有 8 个标签/数据集,每个标签/数据集都需要 getOne、getAll、添加、更新、删除、取消删除查询/突变,有些还需要更多。它变得很难管理,所以我尝试使用injectEndpoints使用https://redux.js.org/tutorials/essentials/part-8-rtk-query-advanced#injecting-上的教程按标签分割查询端点。
不幸的是,当使用他们的代码结构时,我收到一个错误Uncaught ReferenceError: builder is not defined
。我错过了什么吗?
import { apiSlice } from "./apiSlice";
export const accountsSlice = apiSlice.injectEndpoints({
endpoints: builder ({
getAccounts: build.query({
query: () => ({
url: '/api/accounts',
method: 'get'
}),
providesTags: (result, error, arg) => [{ type: 'Account', id: arg }]
}),
getAccount: build.query({
query: accountId => ({
url: `/api/accounts/${accountId}`,
method: 'get',
}),
providesTags: (result, error, arg) => [{ type: 'Account', id: arg }]
}),
addAccount: build.mutation({
query: (account) => {
console.log('account data:', account);
return {
url: `/api/accounts/store`,
method: 'post',
data: account
}
},
invalidatesTags: (result, error, arg) => [{ type: 'Account'}]
}),
updateAccount: build.mutation({
query: (account) => {
console.log('account data:', account);
return {
url: `/api/accounts/${account.acc_id}/update`,
method: 'patch',
data: account
}
},
invalidatesTags: (result, error, arg) => [{ type: 'Account', id: arg.id}]
}),
})
})