Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 有可能改变反应道具吗_Reactjs_React Props - Fatal编程技术网

Reactjs 有可能改变反应道具吗

Reactjs 有可能改变反应道具吗,reactjs,react-props,Reactjs,React Props,如果道具是不可变的,那么我们如何在子组件中更改它。它是由生命周期方法componentDidUpdate(prevProps,prevState)完成的。假设此对象作为道具出现在子组件中 const user = { name: "Abc", age: 12, gender: "Male", } 如果您只想在子组件中使用道具而不更改道具值,则可以简单地在子组件中维护状态,或者如果您不想维护状态,则直接使用道具值。 与国家 componentD

如果道具是不可变的,那么我们如何在子组件中更改它。它是由生命周期方法componentDidUpdate(prevProps,prevState)完成的。

假设此对象作为道具出现在子组件中

const user = {
  name: "Abc",
  age: 12,
  gender: "Male",
}
如果您只想在子组件中使用道具而不更改道具值,则可以简单地在子组件中维护状态,或者如果您不想维护状态,则直接使用道具值。
与国家

componentDidUpdate() {
  if(this.state.user !== this.props.user) {
    this.setState({ user: this.props.user })
  }
}
如果您想更改来自道具的用户值,则可以执行以下操作:

const { name, age } = this.props.user;
name = "ABC";
age = 14;

因为props和
const{name,age}
都只指向同一个引用,所以它将更新props值。

假设此对象作为子组件中的一个prop出现

const user = {
  name: "Abc",
  age: 12,
  gender: "Male",
}
如果您只想在子组件中使用道具而不更改道具值,则可以简单地在子组件中维护状态,或者如果您不想维护状态,则直接使用道具值。
与国家

componentDidUpdate() {
  if(this.state.user !== this.props.user) {
    this.setState({ user: this.props.user })
  }
}
如果您想更改来自道具的用户值,则可以执行以下操作:

const { name, age } = this.props.user;
name = "ABC";
age = 14;

因为props和
const{name,age}
都只指向同一个引用,所以它将更新props值。

我认为最好只更改它自己组件上的props值。您只需在父组件上创建一个函数:

updateProps(newValue){
   this.setState({myState: newValue})
}
this.props.updateProps('hello')
然后,您只需将函数和状态作为道具一起传递:

<Child updateProps={this.updateProps} myProps={this.state.myState} />

我认为最好只改变道具本身组件的道具值。您只需在父组件上创建一个函数:

updateProps(newValue){
   this.setState({myState: newValue})
}
this.props.updateProps('hello')
然后,您只需将函数和状态作为道具一起传递:

<Child updateProps={this.updateProps} myProps={this.state.myState} />

是否要直接更改其他组件中的道具值?是的,在子组件中是否可能?不允许组件直接更改其自身的道具。道具来自父组件,因此父组件负责更改这些值(通常来自父组件中的状态)。“其他组件”是什么意思?@Gopika,我认为您可以管理您的子组件中接收道具的状态。。但是,如果您提供更多您想要实现的内容,那么这将是一件好事。@Gopika,是的,您可以更改子组件中的道具值,因为这不是最佳实践。但如果你需要,我可以告诉你。你想直接更改其他组件中的道具值吗?是的,在子组件中可能吗?不允许组件直接更改自己的道具。道具来自父组件,因此父组件负责更改这些值(通常来自父组件中的状态)。“其他组件”是什么意思?@Gopika,我认为您可以管理您的子组件中接收道具的状态。。但是,如果您提供更多您想要实现的内容,那么这将是一件好事。@Gopika,是的,您可以更改子组件中的道具值,因为这不是最佳实践。但如果你需要,我可以告诉你。