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