如何在 VueJS 中组织嵌套的道具?

How to organize nested props in VueJS?

我有一个奇怪的 organization/architecture 泡菜,我似乎无法理解。

假设我有 3 个组件,A -> B -> C,其中 A 是一个大 parent,B 是一个 parent,C 是一个 child。

A​​ 将 object 的数组传递给 B。 B 遍历数组,将每个 object 传递给 C 的实例。 其中一些 object 保证不会更改,而另一些可能会更改。

C 要求 object 中存在两个字段,例如 object.name 和 object.icon。这将在 C 的道具中指定。

我的问题是,使用组件 A 的开发人员必须查看 C 的 props 才能知道在 object 中向 B 提供哪些属性。如果我添加,这个问题只会变得更糟A 和 C 之间的更多组件。

我该如何构造它? 我在想也许这就是商店的用武之地,但我一直认为商店是为了维持可以改变的状态。而A提供的一些object保证永远不变

我个人会在组件之间使用共享状态,或者如您所说,使用存储。当你想在组件之间维护一些数据时,存储特别有用,并且当其中任何一个发生变化时,它会在所有其他组件中更新。

简单示例:

var sourceOfTruth = {
  propThatChanges: {},
  immutable: {}
}

var vmA = new Vue({
  data: sourceOfTruth.propThatChanges
})

var vmB = new Vue({
  data: sourceOfTruth.propThatChanges
})

现在,每当 sourceOfTruth.propThatChanges 发生突变时,vmAvmB 都会自动更新它们的视图。对于保证不会更改的对象,您可以简单地不将其传递给 C 组件,就像 sourceOfTruth.immutable 一样。或者您可以创建一个可供 A 而不是 B 或 C

可用的全新存储对象

Vue 文档中有更多信息,您应该查看一下: http://vuejs.org/guide/application.html#State-Management