如何在Vue.js中将道具传递给孙子时定义属性类型?

时间:2018-03-10 18:37:41

标签: vue.js

我的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组件中,还是以其他方式?

2 个答案:

答案 0 :(得分:1)

foo确保了类型和默认值,因此无需在bar中验证它们。如果类型具有特殊行为(例如,布尔值),则需要指定它,但字符串没有什么特别之处。

答案 1 :(得分:0)

  

每个组件实例都有自己独立的范围。这意味着您不能(也不应该)直接引用子组件模板中的父数据。可以使用props将数据传递给子组件。

Passing data with props

您需要的是使用scoped slot

Scoped slots允许您将props从Parent组件传递到子组件,而不将它们耦合在一起。