vue.js - [Vue warn] : Invalid prop: custom validator check failed for prop "value" 是什么原因

标签 vue.js nuxt.js vuejs-datepicker

我有 nuxt.js 应用程序,它使用 vuejs-datepicker :

<template>
<!-- ... -->

    <DatePicker :value="datePicker.value" />
 <!-- ... -->
 </template>

和一堆日期变量:
<script>
import DatePicker from 'vuejs-datepicker'
import { DateTime } from 'luxon'

const moment = require('moment')

const date = new Date(2016, 8, 16)
const date2 = moment('2016-09-16').toDate()
const date3 = DateTime.local(2016, 9, 16).toJSDate()

export default {
  components: {
    DatePicker
  },
  data() {
    return {
      datePicker: {
        mondayFirst: true,
        format: 'dd.MM.yyyy',
        value: date
      }
    }
  }
}

当我将其“值”属性绑定(bind)到通常的日期变量“日期”时,一切正常,但是当我选择 date2 或 date3 时,我收到了这个烦人的警告
[Vue warn]: Invalid prop: custom validator check failed for prop "value".

found in

---> <DatePicker>
       <StaticPositionsTab> at components/StaticPositions.vue
         <BTab>
           <BTabs>
             <Pages/index.vue> at pages/index.vue
               <Nuxt>
                 <Layouts/default.vue> at layouts/default.vue
                   <Root>

我找到了 value 属性的自定义验证器,它非常简单明了,并且在所有三种情况下都返回 true:
value: {
      validator: function (val) { return utils$1.validateDateInput(val); }
    }

...
validateDateInput (val) {
    return val === null || val instanceof Date || typeof val === 'string' || typeof val === 'number'
  }

但是有什么区别呢?会不会是 Vue.js 本身的 bug?

最佳答案

date2date3是对象,而 value 需要 null |日期 |字符串 |数字

const date2 = moment('2016-09-16').toDate()
const date3 = DateTime.local(2016, 9, 16).toJSDate()

typeof date2 // object
typeof date3 // object

您应该使用 .toString()将它们转换为字符串
const date2 = moment('2016-09-16').toString()
const date2 = moment('2016-09-16').toISOString()
const date3 = DateTime.local(2016, 9, 16).toString()

或使用 unix 时间戳
const date2 = moment('2016-09-16').unix()
const date3 = moment('2016-09-16').valueOf()
const date4 = moment('2016-09-16').getTime()
const date5 = DateTime.local(2016, 9, 16).valueOf()

关于vue.js - [Vue warn] : Invalid prop: custom validator check failed for prop "value" 是什么原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56155534/

相关文章:

javascript - 在 Vue.js 的 watch 中使用 try catch

nuxt.js - 如何在nuxt项目中禁用 'no-unused-vars'规则

vuejs-datepicker - 语言似乎在 vuejs-datepicker 中不起作用

javascript - 导入不适用于 Firebase Client v9 (npm)

vue.js - v-cloak 在加载页面时不会隐藏组件

typescript - 模块构建失败 : Error: Could not find file: '[my-project-directory]\src\App.vue'

vue.js - 在 nuxt 3 中使用 ofetch 设置全局 header

vue.js - 在 Vue Nuxt 中观看并重新加载 api 文件夹

vue.js - 将 Bootstrap-Vue 文本字段更改为 mm/dd/yyyy 格式的正确方法