【问题标题】:Vue js DOM not updatingVue js DOM没有更新
【发布时间】:2021-05-09 23:56:23
【问题描述】:

我有几个组件:A、B、C 在组件 A 中,我有一个数组。

当我从组件 A 中选择一个项目时:

我有一个 emit 到组件 B 中的一个方法,它显示 filesArray.length 和 data:{filesArray:[]}

在组件 B 内部,我有带有 props: filesArray 的组件 C

当我添加文件时 在组件 C 中它看起来像这样:filesArray.push(myFile);

我的问题: 当我从组件 A 中选择一个项目,然后在组件 C 中添加一个文件时

  • 前几次它正在更新 filesArray.length,我可以看到数组的长度。

  • 第三次或第五次显示 filesArray.length 0 即使在组件 C 中推送项目。

我尝试了什么:在组件 B 中返回 filesArray.length 作为计算:

 computed:{
    filesArrayLength(){
      debugger
      return this.filesArray.length;
    }
  },

它没有用,我尝试使用手表。 它也没有工作

【问题讨论】:

  • 您能向我们展示您的 3 个组件吗?不确定您是否可以直接更新道具。
  • 我的代码太多了。在组件 A 中:我正在向组件 B 中具有 filesArray 的方法发出发射。在 HTML 中,我显示了长度。组件 C 有 props: filesArray 和一个方法: this.$props.filesArray.push(myFile);
  • 然后阅读如何创建一个最小、具体且可验证的示例:stackoverflow.com/help/minimal-reproducible-example。如果没有任何代码,我们无法告诉您可能出了什么问题。

标签: vue.js vuejs2


【解决方案1】:

您不应该直接改变 props,即使您这样做,我认为您也不能期望它可靠地更新父级中的数据。每当您想将项目添加到 filesArray 时,组件 C 应该发出一个事件,以便组件 B 可以附加它。

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 2017-07-04
    • 2020-11-30
    • 2019-08-29
    • 2020-04-09
    • 2017-09-09
    • 2023-04-08
    • 2021-12-11
    • 2020-10-01
    相关资源
    最近更新 更多