我的 RN 0.62.2 应用程序需要在功能组件卸载之前自动保存页面数据。这个想法是,当用户关闭页面时(检测失去焦点可能在这里不起作用,因为用户可能会在模式屏幕中放大图像),然后自动触发保存(到后端服务器)。 既然是函数组件,怎么知道组件什么时候会卸载呢?
这是一个功能组件应该做的示例代码:
const MyCom = () => {
//do something here. ex, open gallery to upload image, zoon in image in `modal screen, enter input`
if (component will unmount) {
//save the data by sending them to backend server
}
}
useEffect
会在每次渲染时触发,如果每次渲染时都保存到后端服务器,则会出现性能问题。自动保存仅在组件卸载之前发生一次。用户可以点击 Back
或 Home
按钮离开页面。
在功能组件中必须使用 useEffect 来执行 componentWillUnmount。
const MyCom = () => {
//do something here. ex, open gallery to upload image, zoon in image in
useEffect(() => {
// Component Did Mount
return () => {
// ComponentWillUnmount
}
},[])
return(/*Component*/)
}