用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 相关文章推荐
MSN消息提示类
Sep 05 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
Aug 09 Javascript
javascript 回到顶部效果的实现代码
Feb 17 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
在javascript中使用com组件的简单实现方法
Aug 17 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
Feb 15 Javascript
bootstrap中模态框、模态框的属性实例详解
Feb 17 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
vue通过点击事件读取音频文件的方法
May 30 Javascript
Angular2 自定义表单验证器的实现方法
Dec 14 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
如何在Vue.JS中使用图标组件
Aug 04 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实现图片简单上传
2006/10/09 PHP
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
Js基础学习资料
2010/11/23 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
事业单位接收函
2014/01/10 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
法制宣传日活动总结
2014/04/29 职场文书
英语求职信范文
2014/05/23 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
婚庆答谢词
2015/01/04 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
Python打包为exe详细教程
2021/05/18 Python