我的HTML中有一个Vue组件foo
,我将参数传递给它:
<foo some="Some String"></foo>
现在在foo
组件内部,我定义了属性类型和默认值,如下所示:
export default {
name: "foo",
props: {
some: {
type: String,
default() { return '' }
}
}
}
foo
组件的模板有另一个组件bar
我传递了some
属性:<bar :some="some"></bar>
。
现在我的问题是:我是否需要再次定义some
属性的类型和默认值,这次是在bar
组件中?所以基本上从foo
组件中复制道具代码并将其粘贴到bar
组件中,还是以其他方式?
答案 0 :(得分:1)
foo
确保了类型和默认值,因此无需在bar
中验证它们。如果类型具有特殊行为(例如,布尔值),则需要指定它,但字符串没有什么特别之处。
答案 1 :(得分:0)
每个组件实例都有自己独立的范围。这意味着您不能(也不应该)直接引用子组件模板中的父数据。可以使用props将数据传递给子组件。
您需要的是使用scoped slot:
Scoped slots允许您将props从Parent组件传递到子组件,而不将它们耦合在一起。