反应/功能组件/道具更改/ getDerivedStateFromProps

Thr*_*itt 3 javascript components state reactjs

可以说我在做一个简单的CRUD应用。我的功能组件基本上只是表格。

  • 在创建的情况下,我通过道具传入一个空对象
  • 在UPDATE的情况下,我通过prop传递了一个带有值的对象(我通过API调用将数据放在父组件中)

我看起来像这样:

const MyForm = (props) => {

 const [myValues, setMyValues] = useState(props.myValues);
 const [errors, setErrors] = useState(0);
 (...)
}
Run Code Online (Sandbox Code Playgroud)

在UPDATE情况下,我(当然)遇到了这样的问题:安装组件时props.myValues仍然为空,而当从父组件进行的api调用完成时没有再次设置(更新),因此表单值为空。

使用类组件,我可以使用getDerivedStateFromProps()解决此问题。功能组件中是否有类似内容?还是我从一开始就做错了?感谢您的任何建议!

Vis*_*hal 5

是的,您当然可以使用useEffect

在您的情况下,代码应如下所示:

const MyForm = (props) => {

 const [myValues, setMyValues] = useState(props.myValues);
 const [errors, setErrors] = useState(0);

 useEffect(() => {
   setMyValues(props.myValues);
 }, [props.myValues]);

}
Run Code Online (Sandbox Code Playgroud)