Redux是什麼?
Redux是一個用來管理管理數據狀態和UI狀態的JavaScript應用工具。隨着JavaScript單頁應用(SPA)開發日趨複雜,JavaScript需要管理比任何時候都要多的state(狀態),Redux就是降低管理難度的。(Redux支持React,Angular、jQuery甚至純JavaScript)
看下圖理解一下
再看下官方的圖
React Components就是我們操控的,我們先見到的是Action Creators請求 然後去Store裏查看 用到Reducer去搜索然後拿來使用
爲什麼使用:
- 組件需要根據狀態發生顯示變化
- state並不總是以單向的方式線性流動
- 存在組件需要更新全局狀態
- 存在組件需要更新另一個組件的狀態
- 存在狀態以許多不同的方式更新
- 狀態樹結構複雜
- 某個狀態需要在全局使用或共享(例如角色權限等信息)
好了現在開始說怎麼使用
寫之前 先安裝一下redux
npm install --save redux
1. 編寫創建store倉庫
在src目錄下創建一個store文件夾,然後在文件夾下創建一個index.js文件。
index.js就是整個項目的store文件,打開文件,編寫下面的代碼。
import { createStore } from 'redux' // 引入createStore方法
const store = createStore() // 創建數據存儲倉庫
export default store //暴露出去
這樣就建立好了倉庫,但是現在亂,這時候就需要Reducers。這兩個一定要一起創建出來,這樣倉庫纔不會出現互懟現象。在store文件夾下,新建一個文件reducer.js,然後寫入下面的代碼。
const defaultState = {} //默認數據 後面可以根據自己的需求添加數據
export default (state = defaultState,action)=>{ //就是一個方法函數
return state
}
state: 是整個項目中需要管理的數據信息,這裏我們沒有什麼數據,先用空對象來表示。
這reducer就建立好了,把reducer引入到store中,再創建store時,以參數的形式傳遞給store。
在store下的index裏 加入Reducers.js
import reducer from './reducer'
const store = createStore(reducer) // 把reducer 放到數據存儲倉庫
2. 在store中爲todoList初始化數據
倉庫store和reducer都創建好了,可以初始化一下我們組件中的數據了,在reducer.js文件的defaultState對象中,加入自己想要的數據
const defaultState = { //根據自己的需要添加
inputValue : 'XXXXXXXX',
State_list:[
'1 redux的好處',
'2 怎麼使用redux'
]
}
export default (state = defaultState,action)=>{
return state
}
3. 組件獲得store中的數據
有了store倉庫,也有了數據,那如何獲得stroe中的數據那?你可以在要使用的組件中,先引入store。
我們組件要使用store,就在src/(你的組件).js文件夾中,進行引入。
import store from './store/index.js' //可以直接簡寫'./store'
然後在組件中獲取用到constructor
constructor(props){
super(props)
console.log(store.getState()) //獲取數據 我們在控制檯中可以看到
this.state=store.getState(); //記得放到state裏面
}
拿到數據了 就可以渲染我們的頁面了