我已经了解了 react v16.7.0 中引入的钩子。
https://reactjs.org/docs/hooks-intro.html
所以我对钩子的理解是我们可以在功能组件中使用状态,而无需在 React 中编写类组件。这真是一个了不起的功能。
但是我不清楚在功能组件中使用钩子。
import { useState } from 'react';
function Example() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
如果使用钩子,如何在上述功能组件中使用生命周期方法?
原文由 Hemadri Dasari 发布,翻译遵循 CC BY-SA 4.0 许可协议
以下是最常见生命周期的示例:
componentDidMount
将一个空数组作为第二个参数传递给
useEffect()
以仅在挂载时运行回调。componentDidUpdate
(松散)通过将单个参数传递给
useEffect
,它将在每次渲染后运行。这是一个松散的等价物,因为这里略有不同componentDidUpdate
不会在第一次渲染后运行,但这个挂钩版本在每次渲染后运行。componentDidUpdate
(严格)此示例与上述示例的不同之处在于,此处的回调不会在初始渲染时运行,严格模拟
componentDidUpdate
的语义。这个 答案是由 Tholle 提供的,所有功劳都归功于他。componentWillUnmount
在
useEffect
的回调参数中返回回调,它将在卸载前调用。shouldComponentUpdate
您已经可以使用
React.PureComponent
或React.memo
在组件级别实现此目的。为了防止重新渲染子组件,此示例取自 React 文档:getDerivedStateFromProps
同样,取自 React 文档
getSnapshotBeforeUpdate
还没有钩子的等价物。
componentDidCatch
还没有钩子的等价物。