Vue同时支持原始类型和对象作为道具,以将它们从父代传递给子代。
我曾经听说过,始终传递原始类型而不传递对象是一种最佳实践。也许是因为原始类型易于更改(如果更改)。
是真的吗?这是最佳做法还是愚蠢的东西?
答案 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
}
}
}