2 回答
TA贡献1830条经验 获得超9个赞
代理是您可以在该减速器中改变状态并在您的状态中获得不可变副本的原因 - 但浏览器在记录代理方面确实很糟糕。
根据文档,您可以使用current
RTK&immer 的导出:
const slice = createSlice({
name: 'todos',
initialState: [{ id: 1, title: 'Example todo' }],
reducers: {
addTodo: (state, action) => {
console.log('before', current(state))
state.push(action.payload)
console.log('after', current(state))
},
},
})
TA贡献1783条经验 获得超4个赞
您需要使用当前
import { current } from '@reduxjs/toolkit'
这样,您就可以达到当前状态并使用它们,之后,您可以在减速器中发送返回以返回新数据。
威尔看起来像这样:
const referralSlicer = createSlice({
name: 'referral',
initialState: {
referrals: [],
currentCard: 0,
} as IReferralSlicer,
reducers: {
addReferrals(state, { payload }) {
return {
referrals: [...state.referrals, payload],
}
},
deleteReferral(state, { payload }) {
const currentState = current(state)
return {
...currentState,
referrals: currentState.referrals.splice(payload, 1),
}
},
setCurrentCard(state, { payload }) {
return {
referrals: state.referrals,
currentCard: payload,
}
},
},
})
添加回答
举报