我已经使用过Elm开发了几个应用程序,现在也用React开发了几个。
在React中,我可以使用shouldComponentUpdate
等函数来控制组件的渲染频率。
现在我才想起来:为什么Elm没有(或者不需要)这些函数呢?
Html.lazy
时,Elm的行为与React在将组件定义为函数时的行为相同(即不是从继承自Component
或PureComponent
类的对象中定义):由于您不依赖于副作用(生命周期函数就是一个适当的例子),因此在给定相同的函数输入时,您的组件将始终生成相同的输出。因此,在这种方式下,您不必考虑是否需要重新渲染您的组件:Elm会处理。shouldComponentUpdate
: 如上所述,使用Html.lazy
时,Elm会检查您的输入是否发生了变化:如果没有发生变化,则在函数上下文中无需重新渲染。否则,Elm将对其虚拟DOM进行diff。但无论哪种情况,Elm都不需要告诉您是否需要渲染。
- componentWillReceiveProps
: 与update
函数非常类似。
- componentDidMount
: 我认为不存在与此相当的功能:组件要么存在且被渲染,要么不存在。这与将函数用作组件非常相似。Html.Lazy
。详情请参见https://guide.elm-lang.org/optimization/lazy.html。 - glennsl