redux--react-redux 相关概念解析

Redux   react  

1 Redux是一个单独的状态管理库。要实现react和redux的关联管理。我们需要利用react-redux。它提供了两个核心方法:Provider和connect。前者负责给react项目根组件包裹一层外衣。然后把store作为参数给传递进来。这样它就是所有组件的根组件,从而可以把数据层层传递给子组件。Connect则负责连接单个组件和store的交流。某个组件如果想要获得store里数据。那么需要通过connect这个桥梁。

2 redux到底提供了哪些方法,又为我们解决了哪些问题?

  A store这个中央数据库是怎么来的?

   Redux提供了createStore这个方法。用来生成store。

  B 如果存在多个reducer函数,如何让他们都存储在store中?

   Redux提供了combineReducers这个方法。可以把所有的reducer都合并在一起。统一在store中,作为数据源

  C 在处理异步请求时,我们可能需要发送多个action,那多个action发送以后的值呢?

这时候我们就用到了中间件。Redux提供了applMiddleyware中间件。它返回多个action执行后最后的值

 3 Connect方法是连接react组件和redux数据中心的桥梁。Connect函数接收4个参数。分别是connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

我们在单独组件中,不需要整个store的数据,可能只需要某一部分的数据,这时候mapStateToProps帮我们把store进行了分解。只把需要的那部分数据进行映射。然后我们通过在组件中通过一个函数以一个对象的方式返回出来。供组件接收使用。mapDispatchToProps同理。通过这种方式我们只需要在组件中通过this.props.xxx就可以直接拿到。

 

Eg:

componentDidMount(){

axios.post("/asset/listCategory",qs.stringify(data)).then(res=>{

             let assetData=res.data.data;

             that.props.fetchAsset(assetData)

         }).catch(err=>{

 

              console.log(err)

         })

 

}

function mapStateToProps(state){

    return{

      state

 }

}

 

function mapDispatchToProps(dispatch){

  return{

     fetchData:(data)=>dispatch(getData(data)),

     fetchAsset:(data)=>dispatch(getAssetData(data)),

  }

}

 

export default connect(mapStateToProps,mapDispatchToProps)(Login)

 

 

附加:

---redux-thunk中间件。

由于action只能是一个对象,对于异步的action无能为力。为了解决这个问题。Redux-thunk应运而生。它在dispatch派发的时候,中途进行拦截判断。如果该action是一个对象。则直接走同步流程。否则则返回一个函数,继续执行。

比如 action 中有 setTimeout 或者通过  fetch 通用远程 API 这些场景,那么就应该使用 redux-thunk 了。redux-thunk 帮助你统一了异步和同步 action 的调用方式,把异步过程放在 action 级别解决,对 component 没有影响

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值