如何使用useEffect钩子(或任何其他钩子)来复制componentWillUnmount?
在传统的类组件中,我会做这样的事情:
class Effect extends React.PureComponent {
    componentDidMount() { console.log("MOUNT", this.props); }
    componentWillUnmount() { console.log("UNMOUNT", this.props); }
    render() { return null; }
}
带useEffect钩子:
function Effect(props) {
  React.useEffect(() => {
    console.log("MOUNT", props);
    return () => console.log("UNMOUNT", props)
  }, []);
  return null;
}
(完整示例:https : //codesandbox.io/s/2oo7zqzx1n)
这是行不通的,因为返回的“清理”函数useEffect捕获了挂载期间的props,而不是卸载期间props的状态。
如何在每次props更改useEffect时不运行函数体(或清理)的情况下获得最新版本的props清理?
一个类似的问题没有解决获得最新props的部分。
该react文档状态:
如果您只想运行效果并仅将其清理一次(在装载和卸载时),您可以传递一个空数组 ([]) 作为第二个参数。这告诉 React 你的 effect 不依赖于来自 props 或 state 的任何值,所以它永远不需要重新运行。
然而,在这种情况下,我依赖于props......但仅用于清理部分......