我有一个组件实例,应该从不同的地方更新。 如何从少数其他组件更新此组件的道具?
class ParentComponent extends React.Component {
...
render() {
return (
<div>
<ChildComponent someValue={this.state.someValue} />
</div>
);
}
}
class ChildComponent extends React.Component {
...
render() {
return (
<div>
...
</div>
);
}
}
class AdditionalComponent1 extends React.Component {
// I want to update 'someValue' in ChildComponent
}
class AdditionalComponent2 extends React.Component {
// I want to update 'someValue' in ChildComponent
}
我只需要一个ChildComponent实例
答案 0 :(得分:1)
//我想在ChildComponent
中更新'someValue'
您无法在 ChildComponent
内的中更新someValue
因为ParentComponent
作为道具传递,道具应该被视为只读取组件内部收到了他们。
您可以以某种方式通知someValue
您要更新ParentComponent
- 如果someValue
更新ChildComponent
,那么someValue
也会收到新版本的ParentComponent
(因为AdditionalComponent1
生活在ParentComponent
)状态。
如果ParentComponent
与AdditionalComponent1
没有“简单”的层次关系(例如兄弟,孩子等),那么你可以使用观察者模式,其中ParentComponent
会监听有趣的事件,{ {1}}发布此类活动。
More信息。
e.g。在comonentDidMount()
{
// from "anywhere" in your app you can publish event and listen here
ObserverPatt.listen("eventName", ()=>{
this.setState({val:0})
});
}
听取事件并采取行动:
...
map
...