2 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個贊
代理是您可以在該減速器中改變狀態(tài)并在您的狀態(tài)中獲得不可變副本的原因 - 但瀏覽器在記錄代理方面確實(shí)很糟糕。
根據(jù)文檔,您可以使用current
RTK&immer 的導(dǎo)出:
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貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個贊
您需要使用當(dāng)前
import { current } from '@reduxjs/toolkit'
這樣,您就可以達(dá)到當(dāng)前狀態(tài)并使用它們,之后,您可以在減速器中發(fā)送返回以返回新數(shù)據(jù)。
威爾看起來像這樣:
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,
}
},
},
})
添加回答
舉報(bào)