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,
}
},
},
})
添加回答
舉報