2023年 facebook 提出了 flux 架構的概念,引發了很多的實現。
2023年,redux 出現,將 flux 與函式式程式設計結合一起,很短時間內就成為了最熱門的前端架構。
redux 是乙個改變狀態(state)的模型,這個模型通過乙個單向操作的方式來改變狀態。
redux 和 react 完全解耦,並不是 redux 非得和 react結合才能使用,而只是 react 結合 redux 會事半功倍。
redux 作為乙個專門關聯 state 的框架應用而生,而這種單向資料流的思想也讓 redux 成為乙個現代框架。
結構說明:
redux的三個非常重要的組成部分:
action 通知 reducer 修改 state,store 管理 state。1.首先,使用者發出 action。
store.dispatch(action);
2.然後,store 自動呼叫 reducer,並且傳入兩個引數:當前 state 和收到的 action。 reducer 會返回新的 state 。
3.state 一旦有變化,store 就會呼叫監聽函式。
// 設定監聽函式
store.subscribe(listener);
4.listener可以通過store.getstate()得到當前狀態。如果使用的是 react,這時可以觸發重新渲染 view。
function
listerner
()
redux 的設計思想很簡單,就兩句話。
web 應用是乙個狀態機,檢視與狀態是一一對應的。
所有的狀態,儲存在乙個物件裡面。
redux 有三大原則:
整個應用的 state 都是儲存在乙個物件樹中,而且這個物件樹存在唯一乙個 store。這個 store 我們通過redux.createstore建立,通過store.getstate()獲取.
改變 state 只能通過 dispatch 乙個 action 才能修改。
action 其實就是乙個簡單物件,其中type是必填項,以便 區分是哪乙個 action。
store
.dispatch();
為了方便給 action 傳遞資料,一般來說我們會把上邊引數物件封裝成方法。如:
const
create = (item)=>
}
即便在小的功能也得這樣修改 state。比如實現表單的雙向繫結。我們給乙個input繫結乙個在onchange事件,然後在onchange裡拿到當前的 value,dispactch 乙個 action 通知 reducer 改變給當前 dom 繫結的state(根據props傳遞),這樣才能實現雙向繫結。
何為純函式?
簡單來說就是函式的輸出完全由輸入所決定,執行過程不依賴於系統的狀態和上下文環境,執行過程不改變它作用域之外的環境狀態。
這個純函式在 redux 裡叫做 reducer,它接收先前的 state 和 action,並返回乙個新的 state,由於它是純函式,所以它的結果是可**的,這樣為編寫單元測試創造了條件。
如果你的ui層非常簡單,沒有很多互動,redux 就是不必要的,用了反而增加複雜性。
上面這些情況,都不需要使用 redux。
上面這些情況才是 redux 的適用場景:多互動、多資料來源。
redux之入門學習
總結 1 頁面上view通過store.dispatch 發出 action,action統一在actioncreators.js檔案中,2 store 收到 action 以後,執行reducer.js中對應的方法,reducer是乙個函式,它接受 action 和當前 state 作為引數,返回...
redux的入門學習 使用react redux
1 使用react redux 簡化的 頁面端的使用 業務的分離的分離不會變 2 減少store的引入 3 簡化state的呼叫 和 state修改的方法的使用 類似vuex中 mapstate和mapmutation 第一步 安心 npm i react redux 第二步 引入和使用 全域性配置...
redux入門基礎
1.redux 適用場景 多互動,多資料來源。2.從元件角度看,如果你的應用有以下場景,可以考慮redux 某個組建的狀態需要共享 某個狀態需要在任何地方都可以拿到 乙個元件需要改變全域性狀態 乙個元件需要改變另乙個元件的狀態 3.設計思想 web應用是乙個狀態機,檢視與狀態一一對應 所有物件都儲存...