问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将一个组件中的数据push到另一个组件数组中?

发布网友 发布时间:2022-05-14 21:46

我来回答

2个回答

懂视网 时间:2022-05-15 02:08

这次给大家带来如何将react组件内数据进行共享,将react组件内数据进行共享的注意事项有哪些,下面就是实战案例,一起来看一下。

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

1.安装react-redux

$ npm i --save react-redux

2.从react-redux导入Proper组件将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 (
 <p> 
 姓名:<input ref="name" type="text"/>
 密码:<input ref="pass" type="text"/>
 <button onClick={this.sure.bind(this)}>登录</button>
 </p>
 )
 }
}

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

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

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

使用JS操作图片只留黑白色

实战项目中如何使用vue组件

热心网友 时间:2022-05-14 23:16

import React, { Component } from 'react';
class Item extends Component {
componentDidMount(){
console.log(this.props.text);
}
render(){
return ( <li>{this.props.text}</li>)
}
};

class App extends Component {
constructor (){
super()
this.state={arr:[0,1]};
this.addItem=this.addItem.bind(this)
}
addItem(){
var arr=this.state.arr.slice(0);
arr.push(arr.length);
this.setState({arr:arr});
}
render() {
var arr=this.state.arr.slice(0);
arr.reverse();
return (
<div className="App">
<button onClick={this.addItem}>add item</button>
<ul>
{arr.map((item,index)=>{
return <Item key={index} text={item}/>
})}
</ul>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 商标,文字已经注册过,再注册会被驳回吗? 朱自清的《匆匆》简介 商标注册为什么会失败 请问哪里有AI的一些高级教程,一直弄不懂那个网格工具呢! 怎么在ai排版里添加视频 为什么企业注册商标会失败呢? AI里面有没有类似于列阵的工具?比如我要把一朵小花均匀的排列在整个版面上。应如何操作? 注册商标会不会很容易失败? gosick什么意思 GOSICK中久城参加的战争是什么战争啊? 根据时间看是1924-1929年之间的,而且在北方,难道是日俄之战? GOSICK的作者在日本地震死了吗,如动漫怎么办,这个动漫还会在更新吗,秋知道的人告诉我,复制党直接无视 QQ分组 朋友 亲人 伙计 爱人 男女同学 同事要分组的方式、类型? 一个身份证可以办几张行用卡? 很急!!!知识产权与版权的关系 高分悬赏 一张身份证可以开多少张信用卡? 小班夏天适合开展什么主题活动 怎么样才能让自己快速变胖 请问到哪里换手机的后盖好一点?移动营业厅可以吗 办理失业登记以后一般多久可以拿到失业金?智慧人社中登记失业多长时间以后审核 vivo手机换后盖用刷机吗? 匆匆 朱自清介绍 朱自清的&lt;&lt;匆匆&gt;&gt;的资料 等离子切割机用什么气 小型等离子切割机配套设施需要气泵吗 家庭自炒李子,新买的板李自家怎么炒?请教高手。 办理动火证的六个步骤 动火证办理流程是什么? 工地动火证怎么开 动火证到哪个部门办理 个体工商户电焊作业如何办理长期动火证? 动火作业证怎么办理 开动火证审批程序是什么 三级动火证怎么办理? 在重要的网络系统中为什么要采用系统容灾技术 ? 系统容灾和系统容错的主要区_百度问一问 网络容灾系统方案具体要写些什么 容灾系统的比较 IT系统的灾备技术手段主要有哪些种 react redux两个页面组件怎么传递数据 谁能开发第四方支付平台 吃什么对老花有治疗作用(延缓)有益?