React 之 Redux

栏目: 服务器 · 发布时间: 7年前

内容简介:应用场景1. 随着 JavaScript 单页应用开发日趋复杂,管理不断变化的 state 非常困难

React 之 Redux

应用场景

1. 随着 JavaScript 单页应用开发日趋复杂,管理不断变化的 state 非常困难

2 Redux的出现就是为了解决state里的数据问题

3. 在React中,数据在组件中是单向流动的

4.  数据从一个方向父组件流向子组件(通过props),由于这个特征,两个非父子关系的组件(或者称作兄弟组件)之间的通信就比较麻烦

React 之 Redux

设计思想:

  • - Redux是将整个应用状态储存到一个地方,成为stroe

  • - 里面保存一个状态树 state tree

  • - 组件可以派发dispatch行为action给store,而不是直接通知其他组件

  • - 其他组件可以通过订阅store中的状态(state)来刷新自己的视图

React 之 Redux

三大原则:

  1. - 整个应用的 state 被存储在一颗 object tree 中,并且这个 object tree 只存在于唯一一个store中

  2. - State 只是只读的,唯一改变  state 的方法就是出发action,action是一个用于描述已发生事件的普通对象,使用纯函数来进行修改,为了描述action如何改变 state tree,你需要鞋reducers

  3. - 单一数据源的设计让 React组件之间的通信更加方便,同时也便于状态的统一管理

React 之 Redux

Redux 概念解析

1 Store

store就是数据保存的地方,你可以把它看成是一个容器。整个应用中只能有一个store,Redux提供 createStore 这个函数,用来生成 Store

React 之 Redux

  • 上述代码中。createStore函数接受另一个函数作为参数,返回新生成的Store对象

2 State

Store包含所有的数据,如果想得到某个时点的数据,就要对Store生成快照,这种时间点的数据集合就叫做 State,当前时刻的 State 可以通过 store.getState()

React 之 Redux

  • Redux 规定,一个State对应一个View。只要 State 相同, View就相同。你知道 State 什么样,就知道View是什么样,反之亦然。

3 Action

State 改变会导致 View 的变化,但是,用户接触不到 State,只能接触到 View,所以,View的的变化必定是 State 导致的。 Action 就是 View 发出的通知,表示State要发生变化了。Action 是一个对象。其中 type 属性是必须的,表示 Action 名称,其他 属性可以自由设置,社区有个规范可以参考

React 之 Redux

4 Action Creator

View 要发出多少消息,就会有多少种Action。如果手写,就会很麻烦。可以定义一个函数来生成 Action,这个 函数叫做 Action Creator

React 之 Redux

  • 上面代码中,addTodo函数就是一个 Action Creator

5 store.dispatch()

store.dispatch(),是 View 发出的唯一方法。

React 之 Redux

  • 上面代码中,store.dispatch()接受一个Action对象作为参数,将它发送出去。结合 Action Cretaor,这段代码可以改成下面这样

React 之 Redux

6 Reducer

Store 收到 Action 之后,必须给出一个新的State,这样View才会发生变化。

这种 State 计算过程叫做 Reducer

Reducer 是一个纯函数,它接受当前 State 和 Action 作为参数,返回一个新的 State

7 combineReducers( reducer s)

combineReducers 辅助函数的作用是。把一个由多个不同 reducer 函数作为 value 的 object,合并成一个最终的 reducer 函数,然后就可以对这个 reducer 调用 createStore。

多个子 reducer 函数合并后,相当于整体函数会为 state 特定字段进行映射产生特定的reducer函数。如 页面 中的例子

todos和counter只会处理对应字段过来的action。

8 applyMiddleware(...middlewares)

输入一个middlewares数组,返回一个函数,函数以createStore为参数:

React 之 Redux

使用示例:

React 之 Redux

每个 middleware 接受  Store  的  dispatch  和  getState  函数作为命名参数,并返回一个函数。该函数会被传入 被称为 next 的下一个 middleware 的 dispatch 方法,并返回一个接收 action 的新函数,这个函数可以直接调用next(action),或者在其他需要的时刻调用,甚至根本不去调用它。调用链中最后一个 middleware 会接受真实的 store 的  dispatch  方法作为 next 参数,并借此结束调用链。所以,middleware 的函数签名是 ({ getState, dispatch }) => next => action。

9 <Provider store>和connect([mapStateToProps], [mapDispatchToProps],[mergeProps], [options])

<Provider store>使组件层级中的 connect()方法都能够获得 Redux store。正常情况下,你的根组件应该嵌套在 <Provider>中才能使用 connect()方法。

React 之 Redux

connect: 连接 React 组件与 Redux store。

React 之 Redux

React 之 Redux

:end:

人要怀揣着想象力活下去 。—— 安藤忠雄


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP Cookbook

PHP Cookbook

Adam Trachtenberg、David Sklar / O'Reilly Media / 2006-08-01 / USD 44.99

When it comes to creating dynamic web sites, the open source PHP language is red-hot property: used on more than 20 million web sites today, PHP is now more popular than Microsoft's ASP.NET technology......一起来看看 《PHP Cookbook》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具