用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 相关文章推荐
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
JQuery设置和去除disabled属性的5种方法总结
May 16 Javascript
js实现select组件的选择输入过滤代码
Oct 14 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
May 07 Javascript
jquery实现倒计时功能
Dec 28 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
May 17 Javascript
JavaScript编写九九乘法表(两种任选)
Feb 04 Javascript
vue修改vue项目运行端口号的方法
Aug 04 Javascript
js微信分享实现代码
Oct 11 Javascript
微信小程序人脸识别功能代码实例
May 07 Javascript
JavaScript 实现继承的几种方式
Feb 19 Javascript
WebWorker 封装 JavaScript 沙箱详情
Nov 02 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去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
python实现的防DDoS脚本
2011/02/08 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Python 数据结构之旋转链表
2017/02/25 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
中国梦我的梦演讲稿
2014/04/23 职场文书
职务任命书范本
2014/06/05 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
年底个人总结范文
2015/03/10 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
Django如何与Ajax交互
2021/04/29 Python