react 组件之间通讯传值的多种方法实现

react组件传值,大概有下面几种方法:

  • props
  • context
  • redux
  • react-router 路由切换时通过url传值(少量非机密数据,其实也是props传)。

今天记录一下通过redux来传值的实现。

我们先写一个createAction的函数:

export function setAnalysisParams(params) {
  return {
    type: SET_ANALYSIS_PARAMS,
    result: params
  }
}

在reducer里面:

export default function reducer(state = initialState, action = {}) {
  switch (action.type) {
    case SET_ANALYSIS_PARAMS:
      return {
        ...state,
        params: action.result
      };
    default:
      return state;
  }

当action触发reducer时,会把action的result传给reducer的params。写好这里,我们就可以在组件中传给adction params了。

@connect(
  () => ({
  }),
  {
    setAnalysisParams
  })

先把actionCreator拿出来。
在组件的某个需要的地方,可以直接向它传我们要放进redux里的数据:

this.props.setAnalysisParams({
        someModels
      });

这时,我们就可以在另外一个组件中取到刚刚放进去的数据。
另外一个组件:

@connect(
  state => ({
    example: state.clinic.params
  }),
  {}
)

把redux中的params数据映射到example上。
下面,就可以用了:

 const {someNames, ...} = this.props.example; //取出数据名

以上,就实现了redux来传值的方法。适合非父子组件且嵌套关系复杂的组件之间数据的传递。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值