3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
我認(rèn)為你是對(duì)的。
您不僅要改變狀態(tài)(如您所指出的那樣),而且還要返回此變異的對(duì)象。
我相信您應(yīng)該只使用Immutable JS中的'set'方法來更新化簡器中的狀態(tài)。

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
我認(rèn)為創(chuàng)建減速器并返回新狀態(tài)的正確方法如下:
export default CartReducer = (storeData = [], action) => {
switch(action.type) {
case ActionTypes.CART_ADD:
return [..state, { ..action.cart }]
default:
return storeData;
}
}
這樣,您可以創(chuàng)建的新副本state并簡單地返回new state,還需要使reducer保持簡單,并避免做其他事情,例如在reducer代碼中添加/更新購物車的邏輯。
您還需要?jiǎng)?chuàng)建一個(gè)default action并且返回原樣state。

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
我將其稱為用于新狀態(tài)創(chuàng)建的元素的變異。
不是純粹的,但是恕我直言就足夠了(當(dāng)您知道優(yōu)缺點(diǎn)時(shí)):
從應(yīng)用程序的角度來看,它確實(shí)可以勝任
對(duì)于相同的輸入返回相同的輸出(可重復(fù)操作序列)
減速器的作用是根據(jù)當(dāng)前狀態(tài)和操作創(chuàng)建新狀態(tài)。舊狀態(tài)將不再使用-此突變無關(guān)緊要。
缺點(diǎn):它可能會(huì)影響redux開發(fā)工具,撤消操作可能無法正常工作(僅在一個(gè)方向上重放操作-redux-undo
用于真正的撤消)
優(yōu)點(diǎn):簡單,內(nèi)存使用量少
在redux中有一個(gè)購物車示例-不同(更平坦)的數(shù)據(jù)結(jié)構(gòu)。
添加回答
舉報(bào)