博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用react-redux实现react组件数据之间数据共享
阅读量:4086 次
发布时间:2019-05-25

本文共 1406 字,大约阅读时间需要 4 分钟。

转载https://segmentfault.com/a/1190000009403046

1.安装react-redux
$ npm i --save react-redux
2.从react-redux导入Prodiver组件将store赋予Provider的store属性,
将根组件用Provider包裹起来。

import {Provider,connect} from 'react-redux'ReactDOM.render(
,document.getElementById('example'))

这样根组件中所有的子组件都可以获得store中的值3.connect二次封装根组件

export default connect(mapStateToProps,mapDispatchToProps)(Wrap)

connect接收两个函数作为参数,一个mapStateToProps定义哪些store属性会被映射到根组件上的属性(把store传入react组件),一个mapDispatchToProps定义哪些行为action可以作为根组件属性(把数据从react组件传入store)3.定义这两个映射函数

function mapStateToProps(state){  return {    name:state.name,    pass:state.pass  }}function mapDispatchToProps(dispatch){   return {actions:bindActionCreators(actions,dispatch)  }}

把store中的name,pass映射到根组件的name,pass属性。
actions是一个包含了action构建函数的对象,用bindActionCreators把对象actions绑定到根组件actions属性上。
4.在根组件引用子组件的位置用 <Show name={this.props.name} pass={this.props.pass}></Show>将store数据传入子组件.

5.在子组件中调用actions中的方法来更新store中的数据

  • 先将actions作为属性传入子组件

  • 子组件调用actions中的方法创建action

//Input组件export default class Input extends React.Component{sure(){this.props.actions.add({name:this.refs.name.value,pass:this.refs.pass.value})}  render(){     return (        
姓名:
密码:
) }}
  • 因为我们采用了bindActionCreators函数,创建action后会立即自动调用store.dispatch(action)将数据更新到store.


这样我们就利用react-redux模块完成了react各个组件之间数据共享。跟上篇文章一样,实现了在一个组件Input中通过actions更新数据到store,然后在另一个组件Show中展示store中的数据

你可能感兴趣的文章
StoryBoard中设置TabBar被选中的颜色
查看>>
视图控制器push下一级控制器, 下级视图向下偏移64
查看>>
StoryBoard中tableview约束被误删的后果
查看>>
使用SDCycleScrollvVew出现的错误
查看>>
window模态导航控制器出现的问题 "whose view is not in the window hierarchy!"
查看>>
Mac / Xcode 常用快捷键
查看>>
iOS开发 Xcode插件
查看>>
Xcode上运行模拟器,无法启用模拟器问题(Unable to the boot Simulator)
查看>>
【LintCode 简单】41. 最大子数组
查看>>
【LintCode 简单】35. 翻转链表
查看>>
【LintCode 简单】165. 合并两个排序链表
查看>>
【LintCode 简单】112. 删除排序链表中的重复元素
查看>>
【LintCode 简单】93. 平衡二叉树
查看>>
【LintCode 简单】749. John's backyard garden
查看>>
【LintCode 简单】457. 经典二分查找问题
查看>>
【LintCode 简单】133. 最长单词
查看>>
【LintCode 简单】491. 回文数
查看>>
【LintCode 简单】569. 各位相加
查看>>
【LintCode 简单】422. 最后一个单词的长度
查看>>
【LintCode 简单】517. 丑数
查看>>