React中的的数据管理Redux
1.作用
用于中大型的应用,当数据比较庞大,组件之间数据交互较多时使用
解决组件的数据通信
解决数据数据和交互较多的应用
解决React的数据管理问题
2.几个概念
- store:数据仓库,保存数据的地方
- state:一个对象,存放了整个应用所需要的数据
- action:一个动作,触发改变数据的方法
- dispatch:将动作触发成方法
- reducer:一个函数,通过获取action,改变数据,生产一个新的state
3.安装
安装:
cnpm i redux --save
4.基本使用
- 导入Redux:
主要要导入createStore
import Redux,{createStore} from 'redux'
- 创建reducer
//一个方法,用于通过action创建一个新的state
//作用:
//1.初始化数据
//2.通过action.type对state进行修改
var reducer=function(state={num:0},action){
switch(action.type){
case 'add':
state.num++
break
case 'reduce':
state.num--
break
default:
break
}
return state
}
- 创建store
//创建仓库
//需要传入一个redecer
//当store被调用时,store会调用reducer来进行对state的处理
var store=createStore(reducer)
replaceReducer
作用:这个方法可以更换reducer
使用:
store.replaceReducer(reducer)
- 创建方法使用store.dispatch
//这两个方法使用了store.dispatch来触发store调用redecer
//通过传递一个action对象{type:''}来进行对redecer方法中的switch的控制
function add(){
store.dispatch({type:"add"})
}
function reduce(){
store.dispatch({type:"reduce"})
}
dispatch的参数
这里的对象对应的就是redecer中的action,可以往这个对象中加入一切数据
例如:
store.dispatch({type:"add",context:{msg:'aaa'}})
//这里的context可以改为其他,接收时对应即可
可以这样接收
console.log(action.context.msg)
- 渲染到页面并调用方法
ReactDOM.render(
<div>
{/*可以通过store.getState获取state */}
<h3>计算数据:{store.getState().num}</h3>
<button onClick={add}>+1</button>
<button onClick={reduce}>-1</button>
</div>
,document.getElementById('app')
)
- 使用store监听state的改变并重新渲染
store.subscribe(()=>{
ReactDOM.render(
<div>
<h3>计算数据:{store.getState().num}</h3>
<button onClick={add}>+1</button>
<button onClick={reduce}>-1</button>
</div>
,document.getElementById('app')
)
})
使用redux可以实现组件之间的传值
|你知道的越多,不知道的越多。 |如果本文章内容有问题,请直接评论或者私信我。如果觉得写的还不错的话,点个赞也是对我的支持哦。 |未经允许,不得转载!|微信搜【程序员徐小白】,关注即可第一时间阅读最新文章。回复【面试题】有我准备的50道高频校招面试题,以及各种学习资料。

浙公网安备 33010602011771号