reactjs - 在兄弟组件之间传递数据时如何执行函数?
问题描述
我有三个组成部分:父母和两个兄弟姐妹
在父母
this.state = {
data: ""
}
change = () => {
this.setState({data: "newData"})
//trave.AddData()
}
render(){
return (
<div>
<Data execute={this.change}/>
<Travel data={this.state.data}/>
</div>
)
}
在数据组件中:
onSubmit=(e)=>{
e.preventDefault();
this.props.change();
}
在我的 Travel 组件中,我有一个函数 AddData()
this.state= {
blows:[]
}
AddData() {
console.log("i dont see", this.props);
this.setState({
blows:[...this.state.blows, this.props.data]
})
我想执行那个功能
解决方案
当你直接改变状态时(this.state.data=xxxxx
),组件不会导致任何重新渲染。在类组件中更新状态的正确方法是使用setState。
this.state = {
data: ""
}
change = () => {
// this.state.data="newData" // <---dont do this
this.setState({data: "newData"})
}
render(){
return (
<div>
<Data execute={this.change}/>
<Travel data={this.state.data}/>
</div>
)
}
推荐阅读
- python - 似乎无法打开 python idle 3.9。赢10
- django - 如何在 Django ModelForm 中乘以字段?
- sudo - 我不小心用 chmod 给了 /etc 777 权限
- python - 如何为 Datadog 跟踪设置自定义“trace_id”?
- .net-core - 使用 ModelBuilder 在 EFCore5 中播种多对多数据库?
- javascript - 使用 PostgreSQL 请求循环遍历数组
- swift - 如何为具有类似于按钮的闭包的 SwiftUI 元素创建一个类
- html - Font-Awesome Free 5 Pusdeo 在 FireFox 中不起作用
- matlab - “错误使用/矩阵尺寸必须一致。” 创建功能系统时
- javascript - 如何使网页上的所有内容都无法点击,直到使用 Javascript 加载某些内容