欢迎!请查阅关于页面以了解更多关于此网站如何运作的信息。
在热重载时有办法仅重新绘制受影响的app部分吗?
Figwheel文档只提到重新加载整个app(在这种情况下,将丢失所有组件的本地状态):https://figwheel.org/docs/hot_reloading.html#re-rendering-ui-after-saving-a-file
在shadow-cljs文档中没有找到关于这一点的内容。到目前为止,我所看到的app要么在热重载时不重新绘制,要么是进行重置。
那么,比较热重载前后的VDOM并基于此差异更新DOM的障碍是什么?或者这已经被实现了吗?
尽管Figwheel/shadow-cljs与React/VDOM无关,但他们不实现这样的行为也是意料之中的,但也许有一些库或明确定义的策略可以做到这一点?
实际上并不是“重载”,而只是更新,这并不意味着整个app的DOM都被替换。调用顶级render与更新组件没有区别,React仍然像往常一样执行diff和patch。
render
通常,像fulcro或re-frame这样的框架都有关于状态及其管理的明确定义规则。请使用这些。
fulcro
re-frame
在工具级别做这件事是非常困难的,这也是为什么figwheel和shadow-cljs都只处理代码的重新加载,而将状态管理留给实际应用程序。我不确定是否可以在工具级别完成这项操作而不完全限制你可以在代码中做的事情。