用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 相关文章推荐
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
jQuery实现用户注册的表单验证示例
Aug 28 Javascript
js+HTML5实现视频截图的方法
Jun 16 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
Bootstrap Table使用整理(五)之分页组合查询
Jun 09 Javascript
Angular如何由模板生成DOM树的方法
Dec 23 Javascript
JS如何寻找数组中心索引过程解析
Jun 01 Javascript
小程序中的箭头函数的具体使用
Jun 19 Javascript
Javascript confirm多种使用方法解析
Sep 25 Javascript
在Vue里如何把网页的数据导出到Excel的方法
Sep 30 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
一个ftp类(ini.php)
2006/10/09 PHP
PHP实现文件安全下载
2006/10/09 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
php 获取本地IP代码
2013/06/23 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
php微信公众号开发之简答题
2018/10/20 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
jQuery 注意事项 与原因分析
2009/04/24 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
详解react-redux插件入门
2018/04/19 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
python实现telnet客户端的方法
2015/04/15 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
python实现视频读取和转化图片
2019/12/10 Python
Python 内存管理机制全面分析
2021/01/16 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
HEMA英国:荷兰原创设计
2018/08/28 全球购物
资料员的岗位职责
2013/11/20 职场文书
法学专业本科生自荐信范文
2013/12/17 职场文书
房地产融资计划书
2014/01/10 职场文书
节能宣传周活动总结
2014/05/08 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
利用Python实时获取steam特惠游戏数据
2022/06/25 Python