【发布时间】:2021-04-26 15:03:33
【问题描述】:
AFAIK,在 React 函数组件中,必须使用 useEffect 来实现 componentWillUnmount 功能,如下所示:
useEffect(()=>{
return console.log("component unmounting");
},[])
我正在制作一个表单页面,并希望在用户退出页面时提交进度。 所以我正在考虑在清理中提交。
但如果我不将formData 状态放入依赖数组中,那么在清理过程中该状态将过时。
如果我确实将formData 放入依赖数组中,那么每次formData 发生变化时都会运行清理。
如何保持状态新鲜,但只在“真正的卸载”中运行清理?
const [formData, setFormData] = useState({
input1: 'input1 default',
input2: 'input2 default',
}); // track the form data
useEffect(()=>{
return () => {
axios.post(myFormSubmitURL, formData);
}
}, []); // this will submit the stale data
useEffect(()=>{
return () => {
axios.post(myFormSubmitURL, formData);
}
}, [formData]); // this will submit the data every time it changes
【问题讨论】:
标签: reactjs post use-effect use-state