reactjs - 没有 useEffect 钩子不能做什么?
问题描述
我阅读了有关文档useEffect
并了解它如何使生活比生命周期方法更容易。然而我想知道没有什么是不可能的useEffect
?
例如代替(所有代码都是虚拟代码)
useEffect(networkRequest.then(update state));
我不能用
// inside functional component
function App() {
networkRequest.then(update state)
}
解决方案
你是什么意思“让生活比生命周期方法更容易”?React 钩子是您在功能组件中利用组件生命周期的方式。
就像render
基于类的组件的生命周期方法是一个没有副作用的纯函数一样,函数组件的整个主体也是如此。功能组件的主体是“渲染”功能。
// inside functional component
function App() {
networkRequest.then(update state)
}
上面写的,没有保护网络请求的副作用,也没有状态更新......它只会更新状态和重新渲染,更新状态和重新渲染,......令人作呕,或者换句话说,无限渲染循环。
React 钩子允许您在功能组件中利用组件生命周期。
不过,要直接回答您的问题:
然而我想知道如果没有useEffect 什么是不可能的?
不可能触发副作用,例如任何异步网络请求、身份验证等......当组件安装或重新渲染时,不可能调用任何特定的。当特定状态/属性值更新时,将无法运行任何特定逻辑。
推荐阅读
- javascript - 使用 Jasmine 测试数据是否正确设置
- c# - TFS API 获取删除文件 - 更新到新版本后的不同行为(从 14xx 到 16xx)
- keras - 如何使用 EarlyStopping 或 ModelCheckpoint 回调中的自定义指标?
- ios - 根据背景颜色调整图标颜色
- scala - 创建编码器后,在 Spark 中解析 Protobuf ByteString 不起作用
- php - 如何为所有缺货和所有库存产品添加自定义属性?
- csv - 如何将数据从工作表 1 移动到工作表 2 并将工作表 1 数据附加到旧工作表 2 数据之上
- openam - XUI 重定向到 /realms/root/users/undefined
- html - 为什么这个白色区域出现在我的模态窗口中?
- javascript - 我的代码被复制并粘贴了大约 5 次,但我怎样才能让它只有一次?