欢迎!请参阅 关于 页面以了解有关此工作方式的更多信息。
热重载时,是否有只重新渲染应用受影响部分的方法?
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都只负责重新加载代码,但将状态管理留给实际应用的原因。我甚至不确定在完全不限制您在代码中可以执行的操作的情况下,是否能够在工具级别完成这项任务。