首页 > 解决方案 > 没有 useEffect 钩子不能做什么?

问题描述

我阅读了有关文档useEffect并了解它如何使生活比生命周期方法更容易。然而我想知道没有什么是不可能的useEffect

例如代替(所有代码都是虚拟代码)

useEffect(networkRequest.then(update state));

我不能用

// inside functional component
function App() {
  networkRequest.then(update state)
}

标签: reactjsuse-effect

解决方案


你是什​​么意思“让生活比生命周期方法更容易”?React 钩子您在功能组件中利用组件生命周期的方式。

就像render基于类的组件的生命周期方法是一个没有副作用的纯函数一样,函数组件的整个主体也是如此。功能组件的主体“渲染”功能。

// inside functional component
function App() {
  networkRequest.then(update state)
}

上面写的,没有保护网络请求的副作用,也没有状态更新......它只会更新状态和重新渲染,更新状态和重新渲染,......令人作呕,或者换句话说,无限渲染循环。

React 钩子允许您在功能组件中利用组件生命周期。

不过,要直接回答您的问题:

然而我想知道如果没有useEffect 什么是不可能的?

不可能触发副作用,例如任何异步网络请求、身份验证等......当组件安装或重新渲染时,不可能调用任何特定的。当特定状态/属性值更新时,将无法运行任何特定逻辑。


推荐阅读