您几乎可以通过任何方式,并且可以通过多种方式进行。这里有4个例子:
注意:对于所有选项,我们假设您有一个使用以下语法的父组件
<example-component :name="somename" :value="somevalue"></example-component>
选项1:作为字符串数组列表的道具。值可以是 JS 中的任何内容,即数字、字符串、对象、函数
<template>
<div>
<p v-text="example"></p>
</div>
</template>
<script>
export default {
name: "ExampleComponent",
prop: ['name','value']
}
</script>
选项 2:最常见的方法。每个道具都是特定类型的值。在这些情况下,您可以将道具列为对象,其中属性的名称和值分别包含道具名称和类型
<template>
<div>
<p v-text="example"></p>
</div>
</template>
<script>
export default {
name: "ExampleComponent",
props: {
name: {
type: String,
required: false,
default: 'something'
},
value: {
type: Number,
required: true
}
},
}
</script>
选项 3:您可以验证或在这种情况下传入一个对象和从工厂函数返回的默认值,因此您将始终拥有一些价值。您甚至可以返回验证validator: function (value) {...}
<template>
<div>
<!-- some value from EventServiceClass-->
<p v-text="example.name"></p>
</div>
</template>
<script>
import EventServiceClass from "./EventServiceClass";
export default {
name: "ExampleComponent",
props: {
example: {
type: Object,
default: function () {
return {name:'a', value: 'b'}
}
},
},
}
</script>
选项 4:更高级一点,但在本例中,我们绑定 get 并设置为表单上的输入属性,我们将使用它来创建工厂表单组件
<template>
<div>
<input
id="name"
type="text"
v-model="name"
class="form--input light"/>
</div>
</template>
<script>
export default {
name: "ExampleComponent",
props: {
name: {
type: String,
default: ""
}
},
computed: {
name: {
get() {
return this.value;
},
set(value) {
this.$emit("input", value);
}
}
}
}
</script>