手動實現redux 二

2022-08-27 19:48:11 字數 1393 閱讀 2562

當我某個元件dispatch出去乙個action(動作)時,store接收到action,應該交給誰來管理呢?這裡我們暫時無法使store根據不同的action來交由相應的reducer處理。

combinereducer函式將多個不同的reducer整合在一起,然後返回乙個整合後的reducer, 也就是乙個函式;函式內部通過分治的方式處理不同的action;
注意combinereducer函式仍然屬於reduxde一部分, 所以我們只需要在上一節的**中新增即可。

let combinereducer = (reducersobj), action=)=>, ) 

// 所以這裡給action設定了乙個預設值, 注意這裡使用了symbol這樣會是action.type無法匹配到使用者定義任何的actiontypes

// rootreducer會返回乙個新的state

let newstate = {};

// 當我們接收到乙個action時,我們無法知道該交由哪個reducer處理, 所以這裡我們 需要遍歷所有reducer

for (let key in reducersobj)

// store狀態樹大概長這樣: }

}return newstate;}}

最後將 combinereducer匯出即可

在這個index.js中我們通常會先引入所有的reducer,並且引入combinereducer

import counter from './counter';
...import todo from './todo';

import from "./../redux";

const rootreducer = combinereducers();

export default rootreducer;

在store.js檔案中引入rootreducer

import  from "redux";

import rootreducers from "./reducers/index";

export default const store = createstore(rootreducers);

react中手動重置redux

前段時間使用redux在react native中,安卓後退兩次關閉後redux未清空的問題,一直覺得處理的不夠優雅,沒有根本解決問題。後來發現再退出登入後,也有部分資料因為redux的邏輯處理資料快取問題被留了下來,造成一些意料之外的問題,於是要徹底解決重置redux的辦法。我的解決方法是,寫乙個...

動手實現 redux

假如按鈕和介面不在同一元件,經常用redux去實現上面功能,可以想象到如下 const test hello world const mapstatetoprops state 用過mapstatetoprops從頂層拿到屬性然後展示,在另乙個組建通過mapdispatchtoprops去觸發act...

Redux 實現原理

以下白話一下個人理解 action 與外部的介面之一,可以理解為告知外部我都可以做些什麼,您有需要儘管吩咐。reducer 對應action所需要做的事情,當然一般來說只是計算得出新的state store 與外部互動的物件,直接提供state,響應action,管理訂閱者 function cre...