探索react-redux


redux

提供唯一一个 store 来存储数据,view 中尽量没有其他状态,使得组件通信更加方便

action 是唯一可以改变状态的,也就是改变状态必须派发一个 action

通过纯函数(reducer)来更新 store(实际上是生成一个新的 store)

store

const store = createStore(reducer);

getState()
dispatch(action)
subscribe(listener)

action

{
  type:'ADD_TODO',
  text:'hello'
}

reducer

function todoApp(state = initialState, action) {
  switch(action.type){
    case ADD_TODO:
    //返回一个新的state
     return Object.assign({},state,{
       todos:[
         ..state.todos,
         {
           text:action.text,
           completed: false
         }
       ]
     })
     default:
      return state
  }
}
  • 常用函数
    combineReducers //把多个 reducer 连接起来
    bindActionCreators //接收 {actionCreator1,actionCreator2} 和 dispatch,返回包装好的函数 ,直接 调用就实现了 dispatch action

在 react 从使用 redux

import { connect } from "react-redux";
connect(mapStateToProps,mapDispatchToProps)(...)

中间件

当派发一个异步的 action 时,就需要中间件处理这个异步,然后再派发给 reducer

  • 常用的中间件
    redux-thunk,redux-saga

不可变数据

只需要比较俩个状态是不是同一个引用就能判断状态是否更新

  • Object.asign()或者{…}
  • immutability-helper
  • immer

文章作者: 沐雪
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 沐雪 !
评论
 上一篇
探索react-ReactRouter 探索react-ReactRouter
React Router声明式路由,动态路由 三种实现方式 url 路由 (BrowserRouter)(react-router-dom 提供) hash 路由 (HashRouter)(react-router-dom 提供) 内存路由
2019-02-11 沐雪
下一篇 
探索react-生命周期 探索react-生命周期
生命周期 创建时:->constructor(初始化内部状态,唯一可以直接修改 state 的地方)->getDerivedStateFromProps(当 state 需要从 props 初始化时使用,不推荐使用,每次 re
2019-02-11 沐雪
  目录