什么是副作用
ReactJS 是一个 UI 库。它的工作是渲染 UI 并根据用户的交互或事件更新它。例如:如果用户单击了按钮,则相应地更新 UI。但是,有许多事件不需要任何用户交互或事件。例如:应用程序加载时的 API 数据,用户已登录,我们希望保留用户信息并更新主题或其他信息。这种不需要任何用户事件或交互的需求在ReactJS中被称为“副作用”
为什么我们需要副作用
ReactJS 中有更多操作不需要用户的事件/交互,但它们对于完成应用程序工作至关重要。
什么是 useEffect 钩子
useEffect() 是 ReactJS 的一个钩子,它允许我们在 React 组件中处理此类副作用。它为我们提供了处理 ReactJS 代码中副作用的正确方法。
喜欢这个博客吗?我用印地语创建了一个关于同一主题的视频:(在 15 分钟内学习 useEffect)[ https://youtu.be/Jbb_xJfURhI ]
useEffect 的语法
useEffect(() => {}, []);
useEffect()有 2 部分:
method : 在这里我们将编写我们的副作用代码
依赖项:依赖项数组是我们声明依赖项的地方,它将决定何时执行 useEffect()
useEffect() 和依赖数组
useEffect() 也可以用作 ReactJS 中的生命周期钩子。这取决于依赖项数组。
1. 省略依赖数组
useEffect(() => {
console.log('I am running');
})
每次组件重新渲染时都会运行,第一次也是如此。这是componentDidMount, 和componentDidUpdate生命周期挂钩。
我们应该将每次组件重新渲染时您想要的副作用保留在这里。
2. 空白依赖数组
useEffect(() => {
console.log('I am running');
},[])
这只会在组件初始安装时运行一次,之后就不会运行。您可能会遇到那些您只希望在第一次安装组件时出现的副作用。例如:API 请求。
3. 依赖数组中的值
useEffect(() => {
console.log('I am running');
},[ count ])
这里我们在依赖数组中添加了一个状态。这将使 useEffect 在加载时运行一次,然后每当状态计数发生变化时运行。这将充当componentDidUpdate和componentDidMount
4. 清理
如果我们需要在卸载之前清理副作用,并且在组件因状态更改而重新渲染之前重新渲染组件,我们可以使用 useEffect 来执行相同的操作。
请记住这是可选的
useEffect(() => {
console.log('I am running');
return () => {
// your clean up code
}
},[ count ])