- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在 Elm 中构建了几个应用程序,现在又在 React 中构建了几个应用程序。
在 React 中,当我可能希望减少渲染组件的频率时,我可以使用诸如 shouldComponentUpdate
之类的函数。
直到现在我才想:为什么 Elm 没有(或不需要)它们?
最佳答案
对于重新渲染的具体问题,Elm 开箱即用地使用虚拟 DOM 比较:如果虚拟 DOM 发生变化,真实 DOM 也会相应更新。这比直接在 DOM 上工作要便宜得多。
有趣的是,Elm 在使用 Html.lazy
时的行为与 React 将组件定义为函数时(即不是对象)的行为相同来自继承自 Component
或 PureComponent
的类):由于您不依赖副作用(生命周期函数是一个合适的示例),因此给定相同的函数输入,您的组件将总是产生相同的输出。这样,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/
Flutter 项目无法在带有 AndroidX 的 Android Studio 中运行兼容性并在运行/控制台窗口中返回以下错误: FAILURE: Build failed with an exc
2019年5月7日,androidx.Life Cycle:*:2.2.0-alpha01发布,宣布:。在文档中提到,我可以获得LifecycleScope:。但是我好像一个也找不到。我目前的依赖关系
我正在尝试使用 Android 生命周期,但我正在添加生命周期编译器依赖项。 这是模块 build.gradle, apply plugin: 'com.android.application' ap
有什么区别 android.arch.lifecycle vs androidx.lifecycle 代码: val loading: LiveData get() = webDataSour
在真实设备上(Nexus 5、Leeco、小米等).observe 方法有效,但是当我在 Firebase 测试实验室开始测试时,应用程序在很多设备上启动时崩溃并出现异常(虚拟 Nexus 10 和
我正在尝试观察 的结果查看收集和上游流停止 . 但是viewModel.testFlow应用程序在后台时仍在收集。 为什么我无法观察到收集已停止?我观察到什么不对吗? View 模型: val tes
我们的 Activity/Fragment 中已经有一个生命周期,那么为什么我们要使用生命周期感知组件并请指导我它的主要目的。如果我们使用生命周期感知,那么为什么我们使用我们已经知道的生命周期 最佳答
我在尝试实现 viewpager2 时收到此错误 相关代码如下: public class ViewPagerAdapter extends FragmentPagerAdapter { privat
目前,我们正在项目中使用LiveData、ViewModel 和Room。 我们正在使用 Java 8。 我们在build.gradle中使用以下内容 // ViewModel and LiveDat
2019 年 5 月 7 日 androidx.lifecycle:*:2.2.0-alpha01 发布公告: This release adds new features that adds sup
正在制作有关 LiveData 和 ViewModel 的教程。在 build.gradle 中我添加了: // ViewModel and LiveData implementation "andr
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我在我的 Android 应用程序中重载了应用程序类,我正在使用 ACRA报告系统。我的应用看起来像 ( real source code here) : public class MyApplica
我的公司有一个最初为 Windows XP 开发的桌面应用程序。最初的程序员已经被解雇了(我可能会因极端偏见而被解雇)。我已经多次修复了该应用程序,但总体上尽量避免它,它是一团糟,修复它的唯一真正方法
我是架构组件的新手,我创建了一个 ViewModel 类并根据架构组件实现了 LifecycleObserver,在 ViewModel 类中我有一个可运行接口(interface)的重写 run()
在 mvvmcross v3 ViewModel public class TimerViewModel : MvxViewModel { System.Timers.Timer timer;
那么,我们来谈谈 React 组件的生命周期。 我的模型文件名为 Firebase.js ,里面有我所有的方法都可以触发我的数据。 Firebase.js export const getUserSh
我想知道 Storm Spout 上的各种方法何时被调用。 我看过ISpout javadoc ,这给了我以下思维模型: "instantiated" -- open(...) -----> "act
我有一个问题,我认为它与屏幕渲染及其生命周期有关。基本上我有两个屏幕(菜单和游戏)。在 GameScreen 渲染方法中,我调用 World.update,然后调用我的 Render。在(GameSc
我在使用 reactjs 时遇到了很多问题,主要是因为我不确定组件生命周期以及 确切地 setState 之类的东西在什么时候做事。 我知道有一个标题为“组件生命周期”的页面,但我需要一个更详细的可视
我是一名优秀的程序员,十分优秀!