2

我试图了解道具验证是针对开发人员还是针对用户。我故意将一个组件留空

我没有传递一个值(顺便问一下,这个传递的值叫什么?):<card />
正确的方法:<card :name="name" />

props:{
    name: { default: "John Doe" }

但是,当我将组件留空且未传递值时,Vue 使用默认值填充模板部分中的值,同时在控制台中留下错误: Property or method "name" is not defined on the instance but referenced during render.

如果我想有一个默认值怎么办?我将继续收到该错误。

4

1 回答 1

2

道具验证对开发人员和用户都很有用,但可选。

我认为问题在于这一行(我将输入重构为“myName”来解释): <card :name="myName" />

错误正在发生,因为myName在将其传递给组件之前未正确定义。

这些将作为静态示例工作:

  • <card name="Jesse" />因为名称不与:or绑定v-bind:
  • <card :name="'Jesse'" />因为 name 在这里绑定,但是绑定到一个文字字符串 'Jesse'

<card :name="myName" /> 将起作用,您只需要断言 myName 不是未定义的。

myName如果您愿意,它本身也可以是父组件中的道具,例如: props: { myName: { default: "Jesse"} }

于 2020-08-06T03:46:45.977 回答