用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 相关文章推荐
根据分辨率不同,调用不同的css文件
Aug 25 Javascript
js获取当前select 元素值的代码
Apr 19 Javascript
基于jQuery的message插件实现右下角弹出消息框
Jan 11 Javascript
JavaScript实现网页截图功能
Oct 16 Javascript
jQuery实现设置、移除文本框默认值功能
Jan 13 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
微信小程序 开发之快递查询功能的实现
Jan 09 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
Jun 13 Javascript
教你完全理解ReentrantLock重入锁
Jun 03 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
基于vue和bootstrap实现简单留言板功能
May 30 Javascript
如何区分vue中的v-show 与 v-if
Sep 08 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 Stream_*系列函数
2010/08/01 PHP
php查看网页源代码的方法
2015/03/13 PHP
php结合安卓客户端实现查询交互实例
2015/05/05 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
Python虚拟环境venv用法详解
2020/05/25 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
python - asyncio异步编程
2021/04/06 Python
react中的DOM操作实现
2021/06/30 Javascript
图神经网络GNN算法
2022/05/11 Python