用react-redux实现react组件之间数据共享的方法

上篇文章写到了redux实现组件数据共享方法,但是在react中,redux作者提供了一个更优雅简便的模块实现react组件之间数据共享。那就是利用react-redux

利用react-redux实现react组件数据之间数据共享

1.安装react-redux

rush:bash;"> $ npm i --save react-redux

2.从react-redux导入Prodiver组件将store赋予Provider的store属性,

将根组件用Provider包裹起来。

rush:js;"> import {Provider,connect} from 'react-redux' ReactDOM.render( ,document.getElementById('example'))

这样根组件中所有的子组件都可以获得store中的值

3.connect二次封装根组件

rush:js;"> export default connect(mapStatetoProps,mapdispatchToProps)(Wrap)

connect接收两个函数作为参数,一个mapStatetoProps定义哪些store属性会被映射到根组件上的属性(把store传入react组件),一个mapdispatchToProps定义哪些行为action可以作为根组件属性(把数据从react组件传入store)

3.定义这两个映射函数

rush:js;"> 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.在根组件引用子组件的位置用 将store数据传入子组件.

5.在子组件中调用actions中的方法来更新store中的数据

rush:xhtml;">

先将actions作为属性传入子组件

子组件调用actions中的方法创建action

rush:js;"> //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 (
姓名:登录

)
}
}

因为我们采用了bindActionCreators函数,创建action后会立即自动调用store.dispatch(action)将数据更新到store.

这样我们就利用react-redux模块完成了react各个组件之间数据共享

跟上篇文章一样,实现了在一个组件Input中通过actions更新数据到store,然后在另一个组件Show中展示store中的数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...