React Native - 修改同一组件中的道具



>我有一个简单的问题:

  1. 是否可以在 React Native 组件(不是父组件(中修改 prop(不是状态(?

  2. 在 [1] 之后,如果我想修改同一组件中的 prop,我该如何实现(如果 [1] 中的答案是否定的解决方法(?

  3. 如果我有以下情况:

//父母

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"。

我的问题是,我们如何实现这一目标(有什么可能的解决方案/替代方案来解决这个问题(?最佳实践/模式是什么?

谢谢!

  1. 状态是可变的,props 是不可变的,所以你不能修改组件中的 props。请在当前组件之外执行此操作。如果你使用的是 redux,你可以在化简器中做到这一点。

  2. 您应该仅在父级上修改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((

相关内容

  • 没有找到相关文章

最新更新