欢迎!请参阅 关于 页以了解更多有关此内容的工作方式的信息。
有办法在热重载时只重新渲染受影响的应用程序部分吗?
Figwheel 文档只提到重新挂载整个应用程序(在这种情况下,将丢失组件的所有本地状态):https://figwheel.org/docs/hot_reloading.html#re-rendering-ui-after-saving-a-file
在 shadow-cljs 文档中还没有找到关于这一点的内容。迄今为止,我所见过的所有应用程序要么在热重载时根本不重新渲染,要么进行重新挂载。
那么,比较热重载前后 VDOM 的障碍有哪些?根据这个差异来更新 DOM?或者这已经实现了?
虽然 Figwheel/shadow-cljs 与 React/VDOM 独立,但他们没有实现这种行为是可以预料的,但也许有一些库或良好的方法来实现这一点?
实际上这并不是“重新挂载”,而只是一个更新,这并不意味着整个应用程序的 DOM 都在替换。调用顶级 render 并不与更新一个组件不同,React 仍然像往常一样执行 diff 和 patch。
render
通常,像 fulcro 或 re-frame 这样的框架对状态及如何管理状态有明确的规则。使用它们。
fulcro
re-frame
在工具层面上这样做会非常困难,这就是为什么 figwheel 和 shadow-cljs 都只负责重新加载代码,而将状态管理留给实际应用。我甚至不确定在没有完全限制可以在代码中做什么的情况下,在工具层面上能否做到这一点。