React入门-9.redux你好
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                React入门-9.redux你好
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                Redux入門
1. 介紹
redux是js的狀態(tài)管理機制,與vuex類似,不過vuex是為vue定制的。而redux并非僅僅服務于react,在jquery,angular,甚至于原生的js中都可以使用。簡單來說,redux就是幫我們管理數據的。
2. 核心概念
-  state let initialState ={person: [] }
 狀態(tài),用于維護數據的一個對象,不能直接修改
-  reducer const reducer = function(state=initialState,action){switch(action.type){case ADD_TO_PERSON :// 在reducer中不能直接修改state, 需要做的事值需要修改personreturn {...state,person:[...state.person,action.payload]}default :return state;} } const store = createStore(reducer);
 action調用后會執(zhí)行響應的reducer,reducer會執(zhí)行響應操作返回數據狀態(tài) state
-  action function addToPerson(name,age){return {type:ADD_TO_PERSON,payload:{name,age}} } // 分發(fā)動作 store.dispatch(addToPerson('tom',18))
 定義動作,獲取參數,進而影響reducer的執(zhí)行來改變或獲取state
3. 完整案例
下面的代碼我們通過create-react-app來創(chuàng)建項目,然后將下面的代碼插入到index.js中執(zhí)行,當然如果我們在實際開發(fā)中肯定不會這么用,需要將寫在特定地方,然后進行引用。
... /* redux開始 */ //1. state數據初始狀態(tài) let initialState ={person: [] } const ADD_TO_PERSON = 'ADD_TO_PERSON'//2. reducer,指定了應用狀態(tài)的變化如何響應 actions 并發(fā)送到store的。 const reducer = function(state=initialState,action){switch(action.type){case ADD_TO_PERSON :// 在reducer中不能直接修改state, 需要做的事值需要修改personreturn {...state,person:[...state.person,action.payload]}default :return state;} } const store = createStore(reducer);//3. action創(chuàng)建函數,添加 function addToPerson(name,age){// action對象,action是將數據從應用傳到store的有效載荷,是store數據的唯一來源,通過store.dispatch來調用return {type:ADD_TO_PERSON,payload:{name,age}} } console.log('-----',store.getState()); //4. 調用action完成person的保存 store.dispatch(addToPerson('tom',18)) console.log('-----',store.getState());/* redux結束 */ ...4. 代碼整理
在具體代碼實施的時會遇到大量的數據,數據多了就需要模塊化來進行管理。目錄結構如下
- actions
該文件夾中定義項目中所有的動作
// index.js import personAction from './personAction'export {personAction }//personAction.jsimport {ADD_TO_PERSON} from '../const'export default {// action創(chuàng)建函數,添加addToPerson: function(name,age){// action對象,action是將數據從應用傳到store的有效載荷,是store數據的唯一來源,通過store.dispatch來調用return {type:ADD_TO_PERSON,payload:{name,age}}} }- reducers
該文件夾中定義項目中所有的reducers
// index.js import { combineReducers } from 'redux'; import personReducer from './personReducer'export default combineReducers({personReducer });//personReducer.js import {personInitialState} from '../state/index.js' import {ADD_TO_PERSON} from '../const' // reducer,指定了應用狀態(tài)的變化如何響應 actions 并發(fā)送到store的。 const personReducer = function(state=personInitialState,action){switch(action.type){case ADD_TO_PERSON :// 在reducer中不能直接修改state, 需要做的事值需要修改personreturn {...state,person:[...state.person,action.payload]}default :return state;} }export default personReducer;- state
該文件夾中定義項目中所有的狀態(tài)
// index.js import personInitialState from './personState'export {personInitialState }//personState.js export default {person: [] }- const.js
該文件中定義項目中所有的常量
const ADD_TO_PERSON = 'ADD_TO_PERSON'export {ADD_TO_PERSON }- index.js
- src/index.js
效果如下
總結
以上是生活随笔為你收集整理的React入门-9.redux你好的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: ZStack获1亿元B轮融资,深创投领投
- 下一篇: CesiumLab V1.3 新功能 M
