安装:npm install redux
store全局状态管理对象
创建store对象,(createStore)
let store=createStore(reducer)
关联reducer
reducer:修改数据
本质是一个方法,两个参数(preState修改前的数据,action)
导入state里面的值: from ‘./state’
state创建全局状态值
react:哪里修改
action:方法
使用:在组件中导入store 。
修改全局状态值
actioncreator提供action
Store.dispatch(action)
重新渲染组件
在JS语法中上下文:context (执行环境,作用域)全局上下文,全局作用域,
Context: 在react中:跨组件传递数据
(子组件都可以访问父组件的上下文)
类型检测插件:prop-types
高阶组件封装redux高阶组件获取全局状态值,通过props传递给需要的组件
a,将store.getState()放在高阶组件上,将全局状态值通过props传递
b,将store.subscribe()放在高阶组件
connect:
向全局注册store对象
context封装redux通过provider放在根组件的context上
1,挂载到根组件上下文上,
2,获取根组件的全局上下文
类型检测
react-redux
安装:npm install react-redux
在 index.js页面引入Provider,挂到App 的外面(包裹App)
引入store对象
哪里使用就在那个组件中使用 引入react-redux,
将目标组件,用connect高阶组件获取上下文内容,并将state值映射到props里。
connect的两个参数
1,mapStateToProps:将全局状态值,映射到当前组件的props,
本质是一个函数,返回一个对象,会将返回的对象映射到props里
2,mapDispathToProps
本质是一个函数,接受dipatch作为参数,返回一个对象(方法)。将对象里的内容映射到拍props
import {bindActionCreators } from 'redux'
bindActionCreators
作用:直接获取ActionCreator里所有的方法
简化redux的使用:
:全局状态管理的插件,必须和redux结合一块使用
封装原理:(基于context,hoc)
redux-thunk处理异步action插件,异步全局状态管理
安装:npm install redux-thunk
(redux-promise,redux-sage)
applyMiddleware中间件
使用:
异步操作只需要两步:
1,store里用异步中间件
2,改actionCreater方法
class类组件,有状态组件,影子组件,智能组件,
function函数组件,无状态组件,木偶组件,ui组件