invalidate 与 decline 有什么区别

来源:5-5 HMR-API 详细解析(下)

linpengteng

2022-05-22

vite invalidate 与 decline 都可以强制刷新,有什么区别吗?

写回答

1回答

好帮手慕小李

2025-02-08

在 Vite 的 HMR(热模块替换)系统中,invalidatedecline 都可以用于强制刷新页面,但它们的作用和使用场景有所不同:

import.meta.hot.invalidate()

  • 作用:强制刷新页面

  • 使用场景:当你需要在 HMR 的上下文中强制刷新页面时,可以使用 invalidate。例如,在某些情况下,模块的更新需要重新加载整个页面才能生效

  • 优先级:不受其他 HMR 操作(如 accept)的影响,因此可以确保页面被强制刷新

import.meta.hot.decline()

  • 作用:表示当前模块不可热更新,当模块更新时会强制进行页面刷新

  • 使用场景:通常用于那些无法进行热更新的模块,例如,当模块的更新会导致复杂的状态不一致时,可以调用 decline 来确保页面被刷新

  • 优先级decline 的优先级比 accept 低,如果对模块进行了 acceptdecline 会失效

总结

  • invalidate:用于在 HMR 的上下文中强制刷新页面,优先级高,不受其他 HMR 操作影响。

  • decline:用于标记模块不可热更新,当模块更新时强制刷新页面,但优先级低于 accept

在实际开发中,如果你需要确保页面被强制刷新,建议使用 invalidate,因为它更直接且不受其他 HMR 操作的干扰


0
0

Vite 从入门到精通,玩转新时代前端构建法则

从使用到原理到实战的【前端构建】高效学习路线,一次性掌握Vite

794 学习 · 105 问题

查看课程