redux学习总结

Redux为JavaScript应用程序的提供可预测状态的容器,这极大降低了维护及调试成本!

安装redux和调试工具redux-devtools

yarn add redux
yarn add redux-devtools --dev
复制代码

基础概念

  1. reducer 根据预定义操作符/命令action执行响应的数据变换
(previousState, action) => newState
复制代码
  1. state 当前状态,数据对象
  2. store 提供subscribe订阅及dispatch触发action等方法
  3. action 预定义操作符/命令
export interface Action<T = any> {
  type: T
}
复制代码

创建store

import { createStore } from 'redux'
let store = createStore(reducer)
复制代码

监听

store.subscribe(()=>store.getState())
复制代码

触发

store.dispatch(action)
复制代码

合并多个reducer成一个reducer combineReducers

import {combineReducers} from 'redux'
combineReducers({...})
复制代码

中间件applyMiddleware

中间件是一个柯里化函数store => next => action =>{}

import {applyMiddleware, createStore} from 'redux';
createStore(reducer,applyMiddleware(
    loggerMiddleware
))
复制代码

手工使用bindActionCreators

import {bindActionCreators} from 'redux'
const boundActionCreators = bindActionCreators(TodoActionCreators, dispatch)
// 调用某个action方法
boundActionCreators.someMethod()
复制代码

组合 compose, 从右向左依次执行

import {compose} from 'redux'
复制代码

实践,一下所提函数均代表纯函数

  1. 尽量分离工具函数 tool function
  2. 尽量分离操作函数,操作函数由一个或多个工具函数组成
  3. 合理分离reducer,分离可降低维护成本
  4. 合并reducer
  5. state设计尽量扁平化,不要有太深的嵌套

redux-observable

利用rxjs的强劲功能进行异步处理

在react中使用 react-redux

链接store, 传入相应的statedispatch到组件props

import { connect } from 'react-redux'
const VisibleTodoList = connect(
  mapStateToProps,
  mapDispatchToProps
)(TodoList)
复制代码

共享store

import { Provider } from 'react-redux'

<Provider store={store}>
    {...}
</Provider>
复制代码

react-router-dom

import { BrowserRouter as Router, Route } from 'react-router-dom'
const Root = ({ store }) => (
  <Provider store={store}>
    <Router>
      <Route path="/" component={App} />
    </Router>
  </Provider>
)
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值