Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 - Fatal编程技术网

Reactjs 当道具从父道具更改时更新受控组件

Reactjs 当道具从父道具更改时更新受控组件,reactjs,Reactjs,我有一个问题,关于用来自其父级的道具来更新受控输入的最佳实践是什么 我有一个包含大量受控输入的组件输入区。在每个输入的构造中,我都有一个使用来自父级的props(值)初始化的状态。但在我的第一次输入中,我有一个自动建议组件,它填充所有输入的每个值(名字、姓氏、日期、电子邮件、电话等)。 因此,我的第一个组件触发一个动作,设置InputArea的新状态,所有值都从autosuggest提交。 所以,我所有的输入都被重新呈现,但没有任何改变(好的,我得到了这个,我们不调用构造函数,所以输入的状态没有

我有一个问题,关于用来自其父级的道具来更新受控输入的最佳实践是什么

我有一个包含大量受控输入的组件输入区。在每个输入的构造中,我都有一个使用来自父级的props(值)初始化的状态。但在我的第一次输入中,我有一个自动建议组件,它填充所有输入的每个值(名字、姓氏、日期、电子邮件、电话等)。 因此,我的第一个组件触发一个动作,设置InputArea的新状态,所有值都从autosuggest提交。 所以,我所有的输入都被重新呈现,但没有任何改变(好的,我得到了这个,我们不调用构造函数,所以输入的状态没有改变)

所以,我试着用prevProps在componentDidUpdate中实现这一点(但eslint说我是一个比较松散的人)。好的,我试着用key={value}为我的输入设置一个键props。它可以工作,但不好,它卸载并装载我的输入。我看到了派生状态或memonized,但对于一个如此简单的特性来说似乎有点“困难和危险”

我希望在6个月内不要更改它,这样我就不会使用componentWillUpdate或其他不安全的东西。因为我喜欢最佳实践,我在网上搜索了很多,但我不太确定我应该做什么

有人有主意吗


谢谢大家=D

检查
this.props.myProp!==prevProps.myProp
componentdiddupdate
中,并根据需要更新您的状态。这将导致额外的重新渲染,但在大多数情况下都可以。是的,我看到react说,如果我们立即使用条件调用它,这并不坏,但我看到getDerivatedStateFromProps仅针对此类问题执行。。。那么,为什么不使用它呢?它写的是“不安全”或“你不需要”,但是嘿,facebook,你失去了我xD
getDerivedStateFromProps
在每次渲染时都会被调用,你无法检查你真正感兴趣的道具是否发生了更改,就像你可以使用
componentDidUpdate
一样。好的,谢谢!我将使用它=DIt检查
this.props.myProp!==prevProps.myProp
componentdiddupdate
中,并根据需要更新您的状态。这将导致额外的重新渲染,但在大多数情况下都可以。是的,我看到react说,如果我们立即使用条件调用它,这并不坏,但我看到getDerivatedStateFromProps仅针对此类问题执行。。。那么,为什么不使用它呢?它写的是“不安全”或“你不需要”,但是嘿,facebook,你失去了我xD
getDerivedStateFromProps
在每次渲染时都会被调用,你无法检查你真正感兴趣的道具是否发生了更改,就像你可以使用
componentDidUpdate
一样。好的,谢谢!我将使用它=D