用react-redux实现react组件之间数据共享的方法


Posted in Javascript onJune 08, 2018

上篇文章写到了redux实现组件数据共享的方法,但是在react中,redux作者提供了一个更优雅简便的模块实现react组件之间数据共享。那就是利用react-redux

利用react-redux实现react组件数据之间数据共享

1.安装react-redux

$ npm i --save react-redux

2.从react-redux导入Prodiver组件将store赋予Provider的store属性,

将根组件用Provider包裹起来。

import {Provider,connect} from 'react-redux'
ReactDOM.render(
<Provider store={store}>
 <Wrap/>
</Provider>,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中的数据

<Input actions={this.props.actions} ></Input>

先将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 (
    <div> 
  姓名:<input ref="name" type="text"/>
  密码:<input ref="pass" type="text"/>
  <button onClick={this.sure.bind(this)}>登录</button>
 </div>

  )
 }
}

因为我们采用了bindActionCreators函数,创建action后会立即自动调用store.dispatch(action)将数据更新到store.

这样我们就利用react-redux模块完成了react各个组件之间数据共享。

跟上篇文章一样,实现了在一个组件Input中通过actions更新数据到store,然后在另一个组件Show中展示store中的数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype使用指南之enumerable.js
Jan 10 Javascript
Prototype 学习 Prototype对象
Jul 12 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
Aug 26 Javascript
Javascript中Event属性搜集整理
Sep 17 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
May 23 Javascript
JS未跨域操作iframe里的DOM
Jun 01 Javascript
JavaScript中this的用法实例分析
Dec 19 Javascript
Javascript基础回顾之(三) js面向对象
Jan 31 Javascript
VUE元素的隐藏和显示(v-show指令)
Jun 23 Javascript
js实现抽奖的两种方法
Mar 19 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
Jun 08 #Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 #Javascript
原生实现一个react-redux的代码示例
Jun 08 #Javascript
vue项目中使用百度地图的方法
Jun 08 #Javascript
浅谈Vue路由快照实现思路及其问题
Jun 07 #Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 #Javascript
jQuery动态移除与增加onclick属性的方法详解
Jun 07 #jQuery
You might like
PHP网站提速三大“软”招
2006/10/09 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
mac下如何将python2.7改为python3
2018/07/13 Python
Python各种扩展名区别点整理
2020/02/27 Python
Python实现汇率转换操作
2020/05/03 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
难忘的一天教学反思
2014/04/30 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
伏羲庙导游词
2015/02/09 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
代码解析React中setState同步和异步问题
2021/06/03 Javascript
python字符串的一些常见实用操作
2022/04/06 Python