React 钩子提供了在没有依赖的情况下模拟生命周期方法componentDidUpdate
useEffect
的可能性:
useEffect(() => {
// componentDidUpdate
});
如何检测某些道具是否要使用反应钩子进行更新?
我需要在一些更改之前执行一些代码。
每当组件重新渲染时,都会调用没有依赖项的useEffect。这就像componentDidMount
和componentDidUpdate
的结合
但是,如果您希望跟踪特定的道具更改,则可以将其添加到dependency array of useEffect
useEffect(() => {
// called on change of props.somename as well as initial render
}, [props.somename]);
另请查看以下帖子,了解有关使用 useEffect 模拟生命周期方法以及仅在更新时执行 useEffect 的更多详细信息
反应钩子只在更新时使用效果?
函数组件中的 ReactJS 生命周期方法
附言您可以根据需要向依赖项数组添加多个值
如果你试图模仿componentWillReceiveProps
的行为,你可以很容易地把你的逻辑放在组件的主体中:
function MyComponent(props) {
// do stuff with props (it's like componentWillReceiveProps)
return (...);
}
你不需要钩子。
请记住,useEffect 在组件使用这些 prop 渲染之后运行,而不是之前。
newProps -> MyComponent is called -> DOM updated -> useEffect called