gpt4 book ai didi

reactjs - Elm 与 React : why no lifecycle functions in Elm?

转载 作者:行者123 更新时间:2023-12-03 13:42:00 24 4
gpt4 key购买 nike

我已经在 Elm 中构建了几个应用程序,现在又在 React 中构建了几个应用程序。

在 React 中,当我可能希望减少渲染组件的频率时,我可以使用诸如 shouldComponentUpdate 之类的函数。

直到现在我才想:为什么 Elm 没有(或不需要)它们?

最佳答案

对于重新渲染的具体问题,Elm 开箱即用地使用虚拟 DOM 比较:如果虚拟 DOM 发生变化,真实 DOM 也会相应更新。这比直接在 DOM 上工作要便宜得多。

有趣的是,Elm 在使用 Html.lazy 时的行为与 React 将组件定义为函数时(即不是对象)的行为相同来自继承自 ComponentPureComponent 的类):由于您不依赖副作用(生命周期函数是一个合适的示例),因此给定相同的函数输入,您的组件将总是产生相同的输出。这样,Elm 或 React 只需要在组件的输入发生变化时重新渲染组件。因此,通过这种方式,您不必关心您的组件是否需要重新渲染:Elm 会处理这个问题。

那么,这些生命周期方法又如何呢?例如:

  • shouldComponentUpdate:正如我上面提到的,当使用 Html.lazy 时,Elm 会检查您的输入是否发生变化:如果没有变化,显然不需要重新渲染在功能环境中。否则,Elm 将比较其虚拟 DOM。不过,在这两种情况下,Elm 都不需要被告知是否需要渲染。
  • componentWillReceiveProps:与您的update函数几乎对应。
  • componentDidMount:我认为没有与此等效的组件:要么您的组件存在并被渲染,要么不存在。这非常类似于使用函数作为组件。

关于reactjs - Elm 与 React : why no lifecycle functions in Elm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56499454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com