【问题标题】:Pass a Class to props in Vuejs将一个类传递给 Vuejs 中的道具
【发布时间】:2018-08-07 02:17:09
【问题描述】:

我是 vue 新手。我最近需要将一个类作为道具传递给组件。如下:

<my-component v-for="(name, index) in Names" :key="'name-' + index " :person="new Person(name)"></my-component>

以下人员:

class Person {
 constructor(name) {
   this.name = name
 }
}

名称是来自服务器的数据。 问题是当我使用this.$props.person.name = 'Ken' 更新名称时,它 不改变。我查看了$props.person,它错过了__ob__: Observer。 请帮忙!!!

【问题讨论】:

  • 我认为。堵塞检测
  • 您是否没有收到关于您的v-for 中缺少:key 的重大警告?
  • 我认为当你在你的 vue 位中设置一个新的人对象时,变化检测会检测到它不会检测到你已经传入的对象属性的变化。
  • @Phil,不,我为 v-for 添加了 :key,但错过了这里
  • 请编辑您的问题,使其反映现实。

标签: javascript vuejs2


【解决方案1】:

也许这会有所帮助:

  1. 将人员:[] 添加到您的州
  2. 在 v-for 中使用 people 数组
  3. 使用名称将新人员推送或拼接到数组中

&lt;my-component v-for="(person, index) in persons" :key="'name-' + index " :person="person"&gt;&lt;/my-component&gt;

this.names.forEach(name=&gt;this.persons.push(new Person(name));

其他东西...

如果您的姓名对人员来说是唯一的,请在您的键中使用它而不是索引,或者更好的是,为人员添加一个 id 字段以优化插入、删除等。

您也可以将您的姓名置于状态,并通过在手表功能中添加人员来响应更改。

您可能还想深入了解您的组件。但该代码并未发布。

【讨论】:

  • 谢谢,似乎这是唯一的解决方案,你能解释一下为什么 new Person in props 不起作用吗?
  • 解决方案无效吗?似乎所述方法是在每次渲染时创建新人。此解决方案创建一次并将实例存储在可以反应的状态数组中。
猜你喜欢
  • 1970-01-01
  • 2021-08-15
  • 2021-11-01
  • 2019-12-30
  • 1970-01-01
  • 2021-07-08
  • 2017-10-02
  • 1970-01-01
相关资源
最近更新 更多