Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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
Javascript React-从父组件设置子组件的状态_Javascript_Reactjs - Fatal编程技术网

Javascript React-从父组件设置子组件的状态

Javascript React-从父组件设置子组件的状态,javascript,reactjs,Javascript,Reactjs,我有两个部分。主组件和子组件 让我们假设一个函数在主组件中被触发,导致其状态发生变异。 主组件的状态作为道具传递给子组件。现在,应该使用子组件的道具中新更新的数据来设置子组件的状态 我无法在``componentDidUpdate上执行此操作,因为它将导致无限循环。 另一方面,我不想将孩子的状态提升到主组件,因为它的大多数代码在主组件中都是无用的 我希望您能提供帮助componentdiddupdate将prevProps作为参数componentdiddupdate(prevProps、pre

我有两个部分。主组件和子组件

让我们假设一个函数在主组件中被触发,导致其
状态发生变异。
主组件的
状态
作为道具传递给子组件。现在,应该使用子组件的
道具
中新更新的数据来设置子组件的
状态

我无法在``componentDidUpdate上执行此操作,因为它将导致无限循环。 另一方面,我不想将孩子的
状态提升到主组件,因为它的大多数代码在主组件中都是无用的


我希望您能提供帮助

componentdiddupdate
prevProps
作为参数
componentdiddupdate(prevProps、prevState、snapshot)
。因此,为了不在无限循环中获取代码,您可以将
this.props
prevProps
进行比较,并相应地更新状态

componentDidUpdate(prevProps) {
  if(this.props.data !== prevProps.data) {
     // update the new state here this will not cause infinite loop
  }
}

componentDidUpdate
prevProps
作为参数
componentDidUpdate(prevProps、prevState、snapshot)
。因此,为了不在无限循环中获取代码,您可以将
this.props
prevProps
进行比较,并相应地更新状态

componentDidUpdate(prevProps) {
  if(this.props.data !== prevProps.data) {
     // update the new state here this will not cause infinite loop
  }
}

您可以使用React中提到的
getDerivedStateFromProps

导出默认类子扩展组件{
静态getDerivedStateFromProps(newProps,currentState){
返回{
value:newProps.value
}   
}
render(){
返回(
{/*您的布局*/}
);
}
}

您可以使用React中提到的
getDerivedStateFromProps

导出默认类子扩展组件{
静态getDerivedStateFromProps(newProps,currentState){
返回{
value:newProps.value
}   
}
render(){
返回(
{/*您的布局*/}
);
}
}

用于使用挂钩的功能组件

function Child(props) {

    const [whatever, setWhatever] = React.useState(props.whatever);

    React.useEffect(() => {
        setWhatever(props.whatever);
    }. [whatever]);
}
export default Child;

希望有帮助。

了解使用挂钩的功能组件

function Child(props) {

    const [whatever, setWhatever] = React.useState(props.whatever);

    React.useEffect(() => {
        setWhatever(props.whatever);
    }. [whatever]);
}
export default Child;

希望有帮助。

您为什么要在该州存储道具?为什么不直接使用
this.prop.which
?因为渲染将取决于子组件的状态。主组件中的道具用于子组件中的函数。也许,我遗漏了一些东西,还有更好的方法吗?不需要将道具保存在状态中。在道具中设置状态总是会让你陷入麻烦。直接使用道具值即可。你为什么要在州里存放道具?为什么不直接使用
this.prop.which
?因为渲染将取决于子组件的状态。主组件中的道具用于子组件中的函数。也许,我遗漏了一些东西,还有更好的方法吗?不需要将道具保存在状态中。在道具中设置状态总是会让你陷入麻烦。直接使用道具值即可。和