Reactjs 如何将this.props初始化为this.state

Reactjs 如何将this.props初始化为this.state,reactjs,react-native,react-apollo,Reactjs,React Native,React Apollo,一个道具中有多个输入值,但我需要的值处于状态。据说我没有初始化这个。props=this.state作为props是只读的 我试过这个。props=this.state,它确实有效 const prevHouse = this.props.house; // This has multiple input values prevHouse.rent = this.state.rent; //State is given input value 上述语法使用是否正确?解决方案是什么 更新:在上

一个道具中有多个输入值,但我需要的值处于状态。据说我没有初始化这个。props=this.state作为props是只读的

我试过这个。props=this.state,它确实有效

const prevHouse = this.props.house; // This has multiple input values

prevHouse.rent = this.state.rent; //State is given input value
上述语法使用是否正确?解决方案是什么


更新:在上面将this.props.house更改为prevHouse

您可以在组件安装时将道具值传递到状态。您可以使用componentDidMount生命周期方法如下所示:

componentDidMount() {

    this.setState({
      rent: this.props.house.rent
    })

  }
这样,当组件装载时,您的状态值租金将是This.props.house.rent的值。然后,您可以为状态中需要的每个道具执行此操作


有关ComponentDidMount的更多信息,请访问

您可以复制道具并将其置于状态。如果您的目标是从子组件更改父组件状态中的状态。您需要使用上下文Api或Redux

您可以使用spread操作符使用类似的道具初始化相同的状态

constructor(props) {
    super(props)

    this.state = {
        ...props //this mean the value of state will filled with all of the object values in props object without need assigning one by one object values
    }

}

不,此语法不正确,并且您无法在子组件中初始化props,您只能在父组件中初始化或更改其值。好的,还有什么替代b'cos this.props.sale来自GraphQL数据库。那么,您想更改此.props.sale的值,或者想在状态中保存您的问题,并共享您的代码,以便我们可以帮助您。我想更改此.props.sale的值请共享您的代码您可能想在componentDidUpdate中执行此操作,以便在每次道具更改时都设置状态。当然,除非OP不希望这成为期望的副作用:在componentDidUpdate中设置状态会创建无限循环并导致崩溃。如果这是一个要求的话,需要防御性的。那么我上面的语法是正确的吗?因为我保存了一份道具的副本