>我有一个简单的问题:
-
是否可以在 React Native 组件(不是父组件(中修改 prop(不是状态(?
-
在 [1] 之后,如果我想修改同一组件中的 prop,我该如何实现(如果 [1] 中的答案是否定的解决方法(?
-
如果我有以下情况:
//父母
render(){
return <View><ChildComponent propA={this.state.propA} /></View>
}
triggerChangeInParent(val) {
this.setState({
propA: val
});
}
//Child (ChildComponent(
render() {
return <View><Text>{this.props.propA}</Text></View>
}
triggerChangeInChild(val) {
//To set props.propA here
}
父组件和子组件都可以修改"propA"。无论谁触发了最新的,其值都将优先于修改"propA"(例如,如果在"triggerChangeInParent"之后触发了"triggerChangeInChild",那么"triggerChangeInChild"中的"val"将用于"propA"。
我的问题是,我们如何实现这一目标(有什么可能的解决方案/替代方案来解决这个问题(?最佳实践/模式是什么?
谢谢!
-
状态是可变的,props 是不可变的,所以你不能修改组件中的 props。请在当前组件之外执行此操作。如果你使用的是 redux,你可以在化简器中做到这一点。
-
您应该仅在父级上修改propA,请在父级中编写一个方法,然后通过prop将其传递给子级。所以你可以从孩子调用方法,意味着你在孩子内部进行更改。
父母
contractor(props){ super(props) this.modifyPropsOnParent = this.modifyPropsOnParent.bind(this) } modifyPropsOnParent(){ // do your change here } render() { return <Child modifyPropsOnParent={this.modifyPropsOnParent} otherProp={yourProps} /> }
孩子可以通过this.props调用父方法。 modifyPropsOnParent((