美文网首页
React-10:redux状态管理库(数据)

React-10:redux状态管理库(数据)

作者: kino2046 | 来源:发表于2020-02-28 01:34 被阅读0次

redux

        强调的是,redux 与 react 并没有直接关系,它是一个独立的 JavaScript 状态管理库(数据),如果我们希望中 React 中使用 Redux,需要先安装 react-redux

知识点

        - 状态管理器

        - state 对象

        - reducer 纯函数

        - store 对象

        - action 对象

        - combineReducers 方法

        - react-redux

        - provider 组件

        - connect 方法

        - Redux DevTools extension 工具

        - 中间件 - middleware

        - redux-chunk


状态(数据)管理

        前端应用越来越复杂,要管理和维护的数据也越来越多,为了有效的管理和维护应用中的各种数据,我们必须有一种强大而有效的

        数据管理机制,也称为状态管理机制,Redux 就是解决该问题的

Redux

        Redux 是一个独立的 JavaScript 状态管理库,与非 React 内容之一

                https://www.bootcdn.cn/redux/

核心概念

        理解 Redux 核心几个概念与它们之间的关系

                - state

                - reducer

                - store

                - action

state 对象

        通常我们会把应用中的数据存储到一个对象树(Object Tree) 中进行统一管理,我们把这个对象树称为:state

state 是只读的

        这里需要注意的是,为了保证数据状态的可维护和测试,不推荐直接修改 state 中的原数据

通过纯函数修改 state

        什么是纯函数?

纯函数    (Reducer

        1. 相同的输入永远返回相同的输出

        2. 不修改函数的输入值

        3. 不依赖外部环境状态

        4. 无任何副作用

使用纯函数的好处    (特别单纯,里面没有可变的东西)

        1. 便于测试

        2. 有利重构

Reducer 函数

上面的 todo 函数就是 Reducer 函数

        1. 第一个参数是原 state 对象

        2. Reducer 函数不能修改原 state,而应该返回一个新的 state

        3. 第二参数是一个 action 对象,包含要执行的操作和数据

        4. 如果没有操作匹配,则返回原 state 对象


action 对象

        我们对 state 的修改是通过 reducer 纯函数来进行的,同时通过传入的 action 来执行具体的操作,action 是一个对象

                - type 属性 : 表示要进行操作的动作类型,增删改查……

                - payload属性 : 操作 state 的同时传入的数据

        但是这里需要注意的是,我们不直接去调用 Reducer 函数,而是通过 Store 对象提供的 dispatch 方法来调用

Store 对象

        为了对 state,Reducer,action 进行统一管理和维护,我们需要创建一个 Store 对象

Redux.createStore 方法

let store = Redux.createStore((state, action) => {

  // ...

}, []);

todo

        用户操作数据的 reducer 函数

[    ]

        初始化的 state

        我们也可以使用 es6 的函数参数默认值来对 state 进行初始化

let store = Redux.createStore( (state = [], action) => {

  // ...

} )

getState() 方法

        通过 getState 方法,可以获取 Store 中的 state

dispatch() 方法

        通过 dispatch 方法,可以提交更改,相当于打补丁,可以对store里的数据进行修改


action 创建函数

        action 是一个对象,用来在 dispatch 的时候传递动作和数据,我们在实际业务中可能会中许多不同的地方进行同样的操作,

        这个时候,我们可以创建一个函数用来生成(返回)action


subscribe() 方法    (可以用于react监听)

        可以通过 subscribe 方法注册监听器(类似事件),每次 dispatch action 的时候都会执行监听函数,该方法返回一个函数,

        通过该函数可以取消当前监听器

Redux 工作流


Reducers 分拆与融合

        当一个应用比较复杂的时候,状态数据也会比较多,如果所有状态都是通过一个 Reducer 来进行修改的话,那么这个 Reducer 

        就会变得特别复杂。这个时候,我们就会对这个 Reducer 进行必要的拆分

        我们把上面的 users、items、cart 进行分拆

combineReducers 方法

        该方法的作用是可以把多个 reducer 函数合并成一个 reducer

相关文章

  • React-10:redux状态管理库(数据)

    redux 强调的是,redux与react并没有直接关系,它是一个独立的JavaScript状态管理库(数据),...

  • Redux

    Redux 专注于状态管理的库 Redux专注于状态管理和react解耦 单一状态,单向数据流 核心概念:stor...

  • redux&react-redux

    Redux是什么? redux是一个状态管理器,是一个帮你管理状态的js库,它提供一套单向流通的流程来管理数据状态...

  • Redux状态管理与React-router

    Redux状态管理 概念:Redux是专注于状态管理的库 组成:store,state,action,reduce...

  • React-11:React-redux库

    redux 强调的是,redux与react并没有直接关系,它是一个独立的JavaScript状态管理库(数据),...

  • React-Redux

    Redux:一个纯粹的状态管理系统,npm i redux -S redux是一个独立的专门用于做状态管理的JS库...

  • Flutter redux 使用与理解

    Flutter 状态管理redux 方案理解与实践 redux 数据管理方式来自 react ,React 的数据...

  • redux 使用

    什么是Redux Redux 是数据管理工具,Redux 能让Javascript的状态管理变得更加可预期 项目中...

  • Redux详解与在小程序中怎么使用

    什么是Redux ​ Redux我们可以把它理解成一个状态管理器,可以把状态(数据)存在Redux中,以...

  • 从表象理解Redux

    Redux简介 Redux是JavaScript状态容器,用于管理状态。所谓状态就是程序中的一些特定意义数据。如在...

网友评论

      本文标题:React-10:redux状态管理库(数据)

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