redraw()
优质
小牛编辑
132浏览
2023-12-01
描述
当数据层的数据改变时,更新 DOM。
在视图中的事件处理函数中、或者是 m.request
/m.jsonp
请求完成后不需要调用该方法。
在 setTimeout
、setInterval
、requestAnimationFrame
的回调中,或者第三方库的回调中,需要调用该方法。
通常 m.redraw()
会触发异步重绘,但是如果 Mithril 检测到使用同步重绘可以提高性能的话,则会使用同步重绘(例如,在最后一个动画帧中没有重绘,则会进行一次同步重绘)。你在编写代码时,应该始终把它当成是异步重绘的。
签名
m.redraw()
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
返回 | 没有返回 |
工作原理
当 Mithril 外部的回调运行时,你需要通知 Mithril 的渲染引擎需要重绘了。外部回调可以是 setTimeout
/setInterval
/requestAnimationFrame
,web socket 库的回调,jQuery 插件中的事件回调,第三方 XHR 请求的回调等。
要触发重绘,调用 m.redraw()
即可。注意 m.redraw()
只有在使用 m.mount
或 m.route
时才有效。如果你是通过 m.render
进行渲染的,则需要使用 m.render
进行重绘。
不要在生命周期方法中调用 m.redraw()
。那样做会导致未知的后果。