美文网首页
深入了解下React、Redux、React-Redux

深入了解下React、Redux、React-Redux

作者: cctosuper | 来源:发表于2019-05-30 17:53 被阅读0次

    React:负责组件的UI界面渲染;
    Redux:数据处理中心;
    React-Redux:连接组件和数据中心,也就是把React和Redux联系起来。

    React

    React主要就是用来实现UI界面的,是一个专注与view层的框架。对于一些小项目,如果数据的交互不是很多,完全可以只使用React就能很好的实现。
    在传统的页面开发模式中,需要多次的操作DOM来进行页面更新,而DOM操作会造成页面的性能问题。React可以通过Virtual DOM来减少对DOM的操作来提示性能。

    Virtual DOM

    当有数据需要更新时,会先计算Virtual DOM ,并和上一次的Virtual DOM做对比,只会将需要变化的部分批量的更新到真实DOM上。
    根据react diff策略:

    • Web UI中的DOM节点跨层级的移动操作特别少,可以忽略不计(尽量避免);对树进行分层比较,两棵树只会对同一层级的节点进行比较;
    • 拥有相同类型的两个组件将会形成相似的树形结构,反之亦然;不是同一类型的组件,将替换整个组件下的所有子节点;
    • 对于同一层级的一组子节点,它们可以通过唯一id进行区分。

      React diff算法流程

    React生命周期

    react生命周期

    redux

    Redux是一种架构模式,是由flux发展而来的。

    Redux三大原则:

    • 唯一数据源
    • 状态制度
    • 改变数据只能通过纯函数完成

    核心api:store,reducer,action

    store

    Redux的核心是store,它由Redux提供的 createStore(reducer, defaultState) 这个方法生成,生成三个方法,getState(),dispatch(),subscrible()。

    • getState():存储的数据,状态树;
    • dispatch(action):分发action,并返回一个action,这是唯一能改变store中数据的方式;
    • subscrible(listener):注册一个监听者,store发生变化的时候被调用。

    reducer

    reducer是一个纯函数,它根据previousState和action计算出新的state。指定了应用状态的变化如何响应action并发送到store的。
    reducer(previousState,action)

    action

    action本质上是一个JavaScript对象,其中必须包含一个type字段来表示将要执行的动作,其他的字段都可以根据需求来自定义。数据的唯一来源,描述了有事情发生这一事实。

    const ADD_TODO = 'ADD_TODO'
    {
      type: ADD_TODO,
      text: 'Build my first Redux app'
    }
    
    三者之间的交互

    React-Redux

    Redux 本身和React没有关系,只是数据处理中心,是React-Redux让他们联系在一起。
    React-rRedux提供两个方法:connect和Provider。

    connext

    connect连接React组件和Redux store。connect实际上是一个高阶函数,返回一个新的已与 Redux store 连接的组件类。

    const VisibleTodoList = connect(
      mapStateToProps,
      mapDispatchToProps
    )(TodoList)
    
    • mapStateToProps:从Redux状态树中提取需要的部分作为props传递给当前的组件。
    • mapDispatchToProps:将需要绑定的响应事件(action)作为props传递到组件上。

    Provider

    Provider实现store的全局访问,将store传给每个组件。

    原理:使用React的context,context可以实现跨组件之间的传递。 三者之间的工作流程

    相关文章

      网友评论

          本文标题:深入了解下React、Redux、React-Redux

          本文链接:https://www.haomeiwen.com/subject/ytgvtctx.html