【问题标题】:Vue - Force Rerendering Of All ComponentsVue - 强制重新渲染所有组件
【发布时间】:2018-08-20 05:27:35
【问题描述】:

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

【问题讨论】:

    标签: javascript vue.js vuejs2 model-view rerender


    【解决方案1】:

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

    Per docs(粗体是我的):

    它也可以用于强制替换元素/组件 而不是重用它。当您想要:

    • 正确触发组件的生命周期挂钩
    • 触发转换

    例如:

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

    text 更改时,&lt;span&gt; 将始终被替换而不是 修补,因此将触发转换。

    【讨论】:

    • 使用了一些类似的解决方案。感谢您的启发。
    • 当我有一个带有 getter 和 setter 的计算道具并交换道具但值没有改变时,这帮助我解决了另一个问题。上帝保佑你永恒的灵魂
    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 2014-04-20
    • 2019-07-03
    • 2017-11-09
    • 2018-12-23
    • 2020-02-05
    • 2019-11-12
    • 2016-12-31
    相关资源
    最近更新 更多