【发布时间】:2021-06-29 20:26:31
【问题描述】:
这个组件的行为有些奇怪
我尝试了几种方法。 但我仍然不知道如何正确初始化。
当这个状态
const [state, setState] = useState({
qualification: props.profile.qualification,
twitter: props.profile.twitter,
});
结果 console.log("AA01" + JSON.stringify(state)); AA01{} 不知何故,所有元素都丢失了。
所以我就这样改了
const [state, setState] = useState({
qualification: "",
twitter: "",
});
useEffect(() => {
setState({
qualification: props.profile.qualification,
twitter: props.profile.twitter,
});
});
const handleChange = (event) => {
console.log("AA01" + JSON.stringify(state));
setState({ ...state, [event.target.id]: event.target.value });
};
const handleSubmit = (e) => {
e.preventDefault();
console.log("AA" + JSON.stringify(state));
if (state.userName.length < 2) {
return;
}
props.Update(users);
};
props 的数据被插入到状态中,但是警告:超过了最大更新深度。发生了
警告:已超出最大更新深度。当组件在 useEffect 中调用 setState 时,可能会发生这种情况,但 useEffect 要么没有依赖数组,要么每次渲染时有一个依赖项发生变化。
【问题讨论】:
-
只需传递一个空的依赖数组,如下所示 useEffect(() => { setState({qualification: props.profile.qualification, twitter: props.profile.twitter, }); }, []) ;
标签: javascript reactjs react-hooks