React/Redux : 在组件销毁前检测并执行指令
React/Redux : Detect and exectute instructions before component destruction
欧拉,
在我的 redux 状态下,我有一个 isEditing
布尔值,在 false
处启动,用于管理配置文件编辑模式。我创建了一个 redux 动作来切换这个状态。下面是组件渲染的一些屏幕。
在大多数情况下有效:
当我点击编辑名称时,我切换到 true
并显示编辑表单
当我点击保存(或取消)时,它执行(或不执行)api 请求,然后切换到 false
,显示初始组件
但是如果我开始编辑然后 quit 页面手动(通过标志 link 或 url),然后回到这个页面,显然,编辑模式是true
.
仍然活跃
我想在离开页面时将我的状态设为 false
,但我找不到任何选项来在组件销毁之前分派操作(例如旧的 componentWillUnmount() class 编程方法或 beforeUnmount VueJS equivalent)
PS :我使用 React Router V6。似乎在测试期间实现了一个钩子,但从未发布过,此后没有消息:(
另一种方法是在组件创建时强制值 false
,使用 useEffect
。它有效,但我认为这不是正确的地方。我看到编辑模式在我的 ui 中打开然后在几毫秒内关闭。
提前致谢
我相信您可以在 useEffect return 值中发送一个动作,例如 useEffect(() => { return () => dispatch(changeEditMode(false)) }, [])
。它主要类似于 componentWillUnmount()。
尝试对 useEffect hook
使用清理
useEffect(() => {
// Specify how to clean up after this effect:
return function cleanup() {
// make redux call to toggle edit mode
};
});
欧拉,
在我的 redux 状态下,我有一个 isEditing
布尔值,在 false
处启动,用于管理配置文件编辑模式。我创建了一个 redux 动作来切换这个状态。下面是组件渲染的一些屏幕。
在大多数情况下有效:
当我点击编辑名称时,我切换到 true
并显示编辑表单
当我点击保存(或取消)时,它执行(或不执行)api 请求,然后切换到 false
,显示初始组件
但是如果我开始编辑然后 quit 页面手动(通过标志 link 或 url),然后回到这个页面,显然,编辑模式是true
.
我想在离开页面时将我的状态设为 false
,但我找不到任何选项来在组件销毁之前分派操作(例如旧的 componentWillUnmount() class 编程方法或 beforeUnmount VueJS equivalent)
PS :我使用 React Router V6。似乎在测试期间实现了一个钩子,但从未发布过,此后没有消息:(
另一种方法是在组件创建时强制值 false
,使用 useEffect
。它有效,但我认为这不是正确的地方。我看到编辑模式在我的 ui 中打开然后在几毫秒内关闭。
提前致谢
我相信您可以在 useEffect return 值中发送一个动作,例如 useEffect(() => { return () => dispatch(changeEditMode(false)) }, [])
。它主要类似于 componentWillUnmount()。
尝试对 useEffect hook
使用清理 useEffect(() => {
// Specify how to clean up after this effect:
return function cleanup() {
// make redux call to toggle edit mode
};
});