VueJS 使用带有 NULL 和“未定义”值的 Prop 类型验证?

ux.*_*eer 12 javascript validation types vue.js vuejs2

即使VueJS 2 官方文档中关于 prop 验证的说明(作为代码示例的注释行):

// 基本类型检查(null并且undefined值将通过任何类型验证)

我在复制此代码时遇到以下错误- 为什么会这样?

[Vue warn]: Invalid prop: type check failed for prop "value". Expected String, Number, Boolean, got Null 
Run Code Online (Sandbox Code Playgroud)
[Vue warn]: Invalid prop: type check failed for prop "value". Expected String, Number, Boolean, got Null 
Run Code Online (Sandbox Code Playgroud)

Ank*_*nte 25

// 基本类型检查(null并且undefined值将通过任何类型验证)

这仅在required: true未设置时适用。在您的代码中,您说需要道具,因此 Vuejs 显示警告

相关讨论:https : //forum.vuejs.org/t/shouldnt-null-be-accepted-as-prop-value-with-any-type/63887

  • 注意:如果您*希望*也允许 `null`,请使用验证器: `validator: prop => typeof prop === 'string' || 道具 === null` (3认同)
  • 在 vue3 中,我这样声明 ```value: { type: String as PropType<string | null>,默认值:null,必需:false,} ``` (3认同)

小智 10

PropTypeVue3

<script lang="ts">

import { defineComponent, PropType } from 'vue'

export default defineComponent({
  components: {
  ...
  },
  name: 'Component',

  props: {
    value: { 
      type: null as unknown as PropType<string | null>,
      default: null, required: false
    }
  }
})
Run Code Online (Sandbox Code Playgroud)


Mic*_*evý 7

这是因为 required: true

来自API 文档(更多详细信息)

required: Boolean 定义是否需要道具。在非生产环境中,如果此值为真且未传递 prop,则会抛出控制台警告。