用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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
运用jquery实现table单双行不同显示并能单行选中
Jul 25 Javascript
JQuery 选择器、过滤器介绍
Feb 14 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
javascript函数中参数传递问题示例探讨
Jul 31 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
bootstrap下拉列表与输入框组结合的样式调整
Oct 08 Javascript
微信小程序 绘图之饼图实现
Oct 24 Javascript
浅谈移动端之js touch事件 手势滑动事件
Nov 07 Javascript
Vue响应式添加、修改数组和对象的值
Mar 20 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
Dec 19 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 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扩展开发入门教程
2015/02/26 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
javascript回到顶部特效
2016/07/30 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
js实现放大镜特效
2017/05/18 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
python os模块简单应用示例
2019/05/23 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
python实现加密的方式总结
2020/01/19 Python
python多进程使用函数封装实例
2020/05/02 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
python 元组和列表的区别
2020/12/30 Python
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
电脑教师的教学自我评价
2013/11/26 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
工商管理本科生求职信
2014/07/13 职场文书
医院见习报告范文
2014/11/03 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书