首页 > 解决方案 > 反应 / 功能组件 / 道具改变 / getDerivedStateFromProps

问题描述

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

我看起来像这样:

const MyForm = (props) => {

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

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

使用类组件,我会用getDerivedStateFromProps()解决这个问题。功能组件中有类似的东西吗?还是我从一开始就做错了?感谢您的任何建议!

标签: javascriptreactjscomponentsstate

解决方案


是的,您当然可以使用useEffect.

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

const MyForm = (props) => {

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

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

}

推荐阅读