咱们都知道在React中,数据在组件中是单项绑定的。父组件向子组件传递数据能够经过props,可是兄弟组件之间传递数据就比较麻烦。redux 就能够解决这一问题。前端
redux 是将整个应用的state存储在一个公共的store文件当中,组件能够经过分发(dispatch)一个动做或者是行为(action)给这个公用的store,而不是直接去通知其余组件,组件内部经过订阅store中的状态state来刷新本身的视图。这里我我的对的理解是,在咱们的组件内部有个相似于监听器的东西,一旦监听到store中的值发生了改变就会刷新咱们的页面。react
整个应用的数据存储在一个统一的状态树中,也就是咱们前面所说的公共的store 文件。在组件都会从这个store中获取数据。redux
state是只读的,惟一改变state的方法就是触发action,action是一个用于描述以发生时间的普通对象。bash
使用纯函数来执行修改,为了描述action如何改变state的,你须要编写reducers。函数
下面详细介绍一下redux的工做原理ui
经过上面的内容,我想你们应该对redux的用途或者说它是用来干什么的,能帮助开发者解决什么问题大概了有了一些了解,咱们说了redux是为了解决react中数据单向流动的问题,说到数据咱们上面页提到了,redux中的数据是存储在一个状态树store中,因此说:this
import {createStore} from 'redux'
const store=createStore(fn);
复制代码
state就是store中存储的数据,store里面能够拥有多个state,Redux规定一个state对应一个View,只要state相同,view就是同样的,反过来也是同样的,能够经过store.getState( )获取。spa
import {createStore} from 'redux'
const store=createStore(fn);
const state=store.getState()
复制代码
state的改变会致使View的变化,上面咱们说过redux中不能直接经过this.setState()修改state,为了使state发生改变,在redux中提供了一个对象Action,咱们能够理解为一个行为或者是动做,也就是说这个action能够改变state,并且也是改变state的惟一方法。设计
const action={
type:'ADD_TODO', //action名称,必须存在
payload:'redux'
}
复制代码
store.dispatch( )是view发出Action的惟一办法,这里解释一下,在view中,用户触发一个行为或者简单理解点击某一个按钮,这时候若是须要修改state值,就须要触发action,而store.dispatch接收一个Action做为参数,将它发送给store通知store来改变state。3d
const action = {
type:'ADD_TODO',
payload:'redux'
};
store.dispatch(action);
复制代码
Store收到Action之后,必须给出一个新的state,这样view才会发生变化。这种state的计算过程就叫作Reducer。 Reducer是一个纯函数,他接收Action和当前state做为参数,返回一个新的state。
const reducer =(state,action)=>{
switch(action.type){
case ADD_TODO:
return newstate;
default return state
}
}
复制代码
至此redux的原理就介绍完了,若是还有不一样理解的小伙伴们还请下发留言。若是有写的很差的地方还请多多指教。我会继续更新有关前端的技术文章的。