用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 相关文章推荐
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
Oct 20 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
May 17 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
Dec 10 Javascript
jQuery实现伪分页的方法分享
Feb 17 Javascript
EasyUi combotree 实现动态加载树节点
Apr 01 Javascript
jQuery实现动态文字搜索功能
Jan 05 Javascript
JavaScript实现前端分页控件
Apr 19 Javascript
ES6中字符串string常用的新增方法小结
Nov 07 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
jQuery位置选择器用法实例分析
Jun 28 jQuery
微信小程序框架的页面布局代码
Aug 17 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
Jul 28 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中的array数组类型分析说明
2010/07/27 PHP
php join函数应用
2011/05/04 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
php 模拟POST提交的2种方法详解
2013/06/17 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
Python变量和数据类型详解
2017/02/15 Python
python3处理含有中文的url方法
2018/05/10 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
StubHub德国:购买和出售门票
2017/09/06 全球购物
新年抽奖获奖感言
2014/03/02 职场文书
搞笑爱情保证书
2014/04/29 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
运动会闭幕词
2015/01/28 职场文书
北京故宫的导游词
2015/01/31 职场文书
详解Python函数print用法
2021/06/18 Python
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL