绝对需要使用useEffect吗?

时间:2019-10-25 15:57:25

标签: reactjs react-hooks use-effect

我已经使用React Hook几个月了,并严格按照文档使用useEffect挂钩。

一个新同事加入了团队,他在问为什么useEffect是必要的。我们一起阅读了文档,但他指出实施useEffect会导致额外的渲染。

这是一个简单的用例:按下按钮以获取一些数据。点击由Click事件处理程序处理。他想知道为什么他不能直接在事件处理程序中对端点进行异步调用。

我正在寻找一种超出“文档说你不应该”的解释,而实际上是在解释这样做的危险或弊端。

任何人都可以分享原因吗?

1 个答案:

答案 0 :(得分:1)

简而言之,它可用于任何副作用(不仅用于获取数据):

副作用是在调用函数之外可观察到的任何应用程序状态更改,而不是其返回值。副作用包括:

  • 修改任何外部变量或对象属性(例如,全局变量 变量或父函数作用域链中的变量)
  • 登录到控制台
  • 写在屏幕上
  • 写入文件
  • 写给网络
  • 触发任何外部过程
  • 调用具有副作用的任何其他功能

在函数式编程中通常避免产生副作用,这使得程序的效果更易于理解和测试。 Haskell和其他功能语言经常使用monads将副作用与纯函数隔离并封装起来。