【问题标题】:Component rendered multiple times多次渲染的组件
【发布时间】:2021-10-31 19:33:24
【问题描述】:

我正在使用 v-if-statement 分隔块,例如:

<div v-if="resp > 1023">
    <PdfViewer />
</div>

<div v-else>
    <PdfViewer />
</div>

我遇到的问题是在较小的屏幕宽度上查看它时,PdfViewer 会被渲染一次。在超过 1023px 的宽度上,即使第二次提及它是在 if-else 块中,它也会被渲染两次。它里面的其他 html 元素没有显示,但组件是。

Resp 是挂载时的屏幕宽度:

    mounted() {
        this.resp = window.innerWidth;
        console.log(this.resp);
    }

【问题讨论】:

  • 删除 v-else 之后的 "
  • @Radeanu 这不是问题。只是问题中的一个错字,sry。
  • 请分享resp属性的代码
  • 我猜这是 resp 为 '' 或未定义的初始状态
  • 已将mounted 更改为created

标签: vue.js vue-component


【解决方案1】:

我通过在创建的生命周期钩子中分配值来解决它,因此在 v-if 评估之前设置了值。

created() {
    this.resp = window.innerWidth;
    console.log(this.resp);
}

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2017-08-20
    • 2020-07-14
    • 1970-01-01
    • 2020-07-20
    • 2016-12-02
    • 2021-03-08
    • 1970-01-01
    • 2019-05-26
    相关资源
    最近更新 更多