javascript - Vue - 强制重新渲染所有组件

标签 javascript vue.js vuejs2 model-view rerender

我为 Vue 编写了一个插件,但在重新渲染方面遇到了一些问题。事实上,有一个新的过滤器,它可以用全局定义的语言翻译给定的文本。当语言发生变化时,应重新翻译文本。因为这里没有过滤器的事件队列,所以如果语言发生变化,我想强制所有组件重新渲染自身。因此过滤器函数将被重新评估。
我知道我可以使用 vm.$forceUpdate() 重新渲染组件本身。但是我怎样才能让整个 Vue 组件树重新渲染呢?因为这种情况只会发生,如果用户更改语言,性能问题应该不是问题,因为至少用户不必重新加载整个页面并且可以离线执行此操作。 有什么建议吗?

最佳答案

您可以使用 key attribute在组件根中。更改它,组件树将被重新渲染。

Per docs (粗体是我的):

It can also be used to force replacement of an element/component instead of reusing it. This can be useful when you want to:

  • Properly trigger lifecycle hooks of a component
  • Trigger transitions

For example:

<transition>
   <span :key="text">{{ text }}</span>
</transition>

When text changes, the <span> will always be replaced instead of patched, so a transition will be triggered.

关于javascript - Vue - 强制重新渲染所有组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49231068/

相关文章:

javascript - null 之后将值设置为零

javascript - 组件中的异步计算 - VueJS?

javascript - <noscript> 不适用于 firefox

javascript - 有没有一种简单的方法来选择和复制 HTML 表格的 1 或 2 列?

php - 检测到javascript后重定向

vue.js - 如何使用 Nuxt 中间件重定向到外部站点?

javascript - 我正在尝试将动态脚本添加到页面中,但它在 DOM 中仅显示为 txt

javascript - Vue 和 Vuex : computed property isn't called when changing state

javascript - 如何使用 Vue js 2 在组件子组件链上冒泡事件?

javascript - 在 vuejs 中联合两个或多个对象