Vue最佳做法,道具是对象还是原始类型?

时间:2018-10-22 14:29:41

标签: vue.js

Vue同时支持原始类型和对象作为道具,以将它们从父代传递给子代。

我曾经听说过,始终传递原始类型而不传递对象是一种最佳实践。也许是因为原始类型易于更改(如果更改)。

是真的吗?这是最佳做法还是愚蠢的东西?

2 个答案:

答案 0 :(得分:2)

没有真正的“最佳实践”,这实际上取决于您要完成的工作。
您可以同时使用两者,但是请记住,传递非基元时传递的是 POINTER ,而不是实际的对象。因此,在修改子对象中的所述对象时,您还将修改原始对象。

如果要传递的对象是要修改的,但是要作为“副本”,则始终可以使用expand运算符传递它们来创建副本。

{ ...myObject }
[ ...myArray ]

<child-object :someprop="{...object}"></child-object>

这样,您可以确保如果要在子级上修改对象,则子级拥有该对象的副本,并且不会在父级上出现意外行为。

答案 1 :(得分:0)

首先,这本Official Vue Style Guide对于您来说是一本很好的读物。

这个特定的主题Props Definition将成为您正在寻找的答案。


在样式指南中,Vue确实为道具定义建议以下内容。

props: {
  status: {
    type: String,
    required: true,
    validator: function (value) {
      return [
        'syncing',
        'synced',
        'version-conflict',
        'error'
      ].indexOf(value) !== -1
    }
  }
}