我为 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/