欢迎!请查看 关于页面 了解更多关于如何工作的信息。
在热重载中有没有只重新渲染应用影响的组件部分的方式?
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都只处理代码的重新加载,而将状态的管理留给实际应用的原因。我甚至不确定在没有完全限制你可以在代码中执行的操作的情况下,是否可以在工具级别完成这项工作。