第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

這是Pro React 16猶太潔食書中的Redux減速器示例嗎?

這是Pro React 16猶太潔食書中的Redux減速器示例嗎?

慕運(yùn)維8079593 2021-05-08 14:16:23
我正在學(xué)習(xí)React和Redux,目前正在閱讀Adam Freeman的Pro React 16??紤]第5章中的這個(gè)化簡器示例。該化簡器處理修改購物車的操作。這是減速器的一部分:import { ActionTypes } from "./Types";export const CartReducer = (storeData, action) => {    let newStore = { cart: [], cartItems: 0, cartPrice: 0, ...storeData }    switch(action.type) {        case ActionTypes.CART_ADD:             const p = action.payload.product;            const q = action.payload.quantity;            let existing = newStore.cart.find(item => item.product.id === p.id);            if (existing) {                existing.quantity += q;            } else {                newStore.cart = [...newStore.cart, action.payload];            }            newStore.cartItems += q;            newStore.cartPrice += p.price * q;                        return newStore;我的理解是reducer必須是純函數(shù),但是storeData當(dāng)產(chǎn)品已經(jīng)存在于cart數(shù)組中時(shí),這一函數(shù)似乎會(huì)修改store參數(shù)。具體來說,它更新了cart項(xiàng)目的quantity屬性,該屬性existing來自storeData的cart數(shù)組的淺表副本。因此,storeData將被修飾為副作用。我對(duì)么?
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊

我認(rèn)為你是對(duì)的。

您不僅要改變狀態(tài)(如您所指出的那樣),而且還要返回此變異的對(duì)象。

我相信您應(yīng)該只使用Immutable JS中的'set'方法來更新化簡器中的狀態(tài)。



查看完整回答
反對(duì) 回復(fù) 2021-05-20
?
精慕HU

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。


查看完整回答
反對(duì) 回復(fù) 2021-05-20
?
紫衣仙女

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)。


查看完整回答
反對(duì) 回復(fù) 2021-05-20
  • 3 回答
  • 0 關(guān)注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)