Mithril VM DOM diffing不检测附加事件处理程序中的diff

时间:2015-08-26 12:59:28

标签: reactjs mithril.js virtual-dom

这可能不是Mithril特定的问题,但VM DOM通常会出现差异。在“重绘”页面并附加新事件处理程序,删除事件处理程序或更改与事件(如“onclick”)相关联的事件处理程序时,似乎VM DOM差异不会检测到更改,我必须明确强制重新渲染“真正的”DOM。

是否有良好的模式来处理这些情况。

1 个答案:

答案 0 :(得分:1)

具体而言,在Mithril中,onclick和所有on处理程序在处理程序函数完成后自动触发重绘。但是,如果您的onclick处理程序执行真正的DOM操作(第三方库,如jQuery或动画套件),则需要使用config属性: http://lhorie.github.io/mithril/mithril.html#the-config-attribute 在页面呈现后调用。

关于更改事件处理程序,它取决于您在渲染周期中何时进行更改。我必须看一些代码。如果它不太不方便,手动调用重绘并不是一件坏事。如果重绘策略是“差异”,则不会支付罚金。

最后,如果您要介绍自己的事件,请考虑在事件处理程序中使用m.startComputation / m.endComputation。这些可以提供更精细的颗粒控制,并自动调用重绘。 http://lhorie.github.io/mithril/mithril.computation.html