Vue:无效 prop:prop 的类型检查失败。预期为数组,但获取了带值的字符串
2021-04-16
3544
我试图将字符串数组作为 prop 传递给子组件,但出现
Vue: Invalid prop: type check failed for prop . Expected Array, got String with value
错误。
使用该组件:
<template>
<GenericForm title = "Sign Up" button-text= "Sign Up"
fields="['Username', 'Email', 'Password']"/>
</template>
我不确定我做错了什么。我尝试搜索,但找不到将数组作为
<template>
标签内的 prop 传递的示例。
编辑 :
父组件:
<template>
<form
class = "signup-form rounded-lg
p-10 m-auto align-middle content-center
space-y-6
flex flex-col items-center justify-center
">
<div class="title-text light-text text-xl" >Signup</div>
<li v-for="(field, index) in fields">
{{ field.placeholder }}
</li>
<!– <FormField placeholder="Username"/>
<FormField placeholder="Email"/>
<FormField placeholder="Password"/>
<GenericButton :text = "buttonText"/>–>
</form>
</template>
<script>
import ArticleList from "../../components/articles/ArticleList";
import FormField from "@/components/other/FormField";
import GenericButton from "@/components/buttons/GenericButton";
export default {
components: {GenericButton, FormField, ArticleList},
props: {
title: {
type: String,
required: true
},
fields: {
type: Array,
required: true
},
buttonText: {
type: String,
required: true
}
}
}
</script>
编辑 2 :
我还意识到,当我将
:
放在子组件中的
fields
前面时,错误就会消失:
<template>
<GenericForm title = "Sign Up" button-text= "Sign Up"
:fields="['Username', 'Email', 'Password']"/>
</template>
但尽管没有错误,字段也不会在页面上列出。
1个回答
您自己发现的第一个错误,您需要在 prop 前添加一个
:
,否则 Vue 不会处理它并将其视为字符串。
第二个错误是因为您使用了:
<li v-for="(field, index) in fields">
{{ field.placeholder }}
</li>
占位符不存在于您的数组中。只需
field
就足够了,应该会输出值。
S.Visser
2021-04-16