真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Redux中combineReducers實現(xiàn)原理

使用一個reducer

    const initialState =
    {
        id          : 2,
        name    : 'myName', 
    }
    import { createStore } from 'redux';
    const reducer = function(state=initialState, action) {
                    //...        
        return state;
    }
    const store = createStore(reducer);

這種情況下,這個reducer函數(shù)會對所有的action進行判斷和處理,傳入的state參數(shù)是整個store中的狀態(tài)的全集。可能是這樣:

十載的廣漢網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整廣漢建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“廣漢網(wǎng)站設計”,“廣漢網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

    {
                id          : 2,
                name    : 'myName', 
    }

使用combineReducers 復合多個reducer

    const user = (state = [], action) => {
        switch (action.type) {
            case 'RENAME':
                //...
            default:
                return state;
        }
    }

const product = (state = [], action) => {
        switch (action.type) {
            case 'SOLD':
                //...
            default:
                return state;
        }
    }

const reducers = combineReducers({
    user,
    product,
});

const store = createStore(reducers);

這種情況下,每個reducer會對相關的action進行處理,返回與之相關的狀態(tài)。(而實際實現(xiàn)是,combineReducers將所有reducer合并成立一個大的reducer)。

整個store的狀態(tài)全集會是如下樣子:

{
        user: {
            id: 0,
            name: 'myNmae',
        },
        product: {
                id: 0,
                is_sold: 0,
        }
}

可以看出這是一個樹形結(jié)構,每個reducer所處理的數(shù)據(jù)在自己的分支結(jié)構中。因此,每個reducer可以獨立的編寫,無需關注其他reducer的數(shù)據(jù)(state)處理方式。同樣,dispatch的時候只要發(fā)送與之相關的內(nèi)容即可。
譬如,寫一個“我”的reducer:

        const initialState =
        {
            name                 : null,
            displayName     : null,
        };

        const me = (state = initialState, action) =>
        {
            switch (action.type)
            {
                case 'SET_ME':
                {
                    const { name, displayName } = action.payload;
                    return { name, displayName };
                }
                default:
                    return state;
            }
        };

//想要設置“我”的屬性,只要:
store.dispatch({
    type    : 'SET_ME',
    payload : { "jacky", "小王"}
});

但是,事實上每個dispatch發(fā)出之后,所有reducer都會被調(diào)用一遍(只是大部分事不關己,直接返回自己的state),最終會返回一個完整的狀態(tài)樹,就像上面看到的樣子。

編碼建議

對于復雜的應用,可以編寫多個reducer,每個reducer專注處理一類state。
可以將多個reducer的實現(xiàn)放到一個文件里實現(xiàn),也可以每個reducer使用一個單獨的文件(便于分工)。


分享名稱:Redux中combineReducers實現(xiàn)原理
當前地址:http://weahome.cn/article/pedjsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部