vue 子组件 props 参数类型问题

2,496 阅读1分钟

今天开发vue组件的过程中碰到一个vue的警告:Invalid prop: type check failed for prop "blob". Expected Expected Object, got Blob

看报错知道是子组件接收的数据类型是Blob而期望的参数类型Object,是数据类型不一致导致的。

//父组件

    //子组件
    blob: {
      type: Object,
      required: true
    }

一开始,我认为Blob既然是类文件对象,那应该就是对象,是对象的话type写Object的话应该没错啊。但是看到报错提示,我就抱着试试的态度,把type改成了Blob,结果一看,控制台还是出现了警告,只是Blob和Object换了一个位置。

这个子组件数据类型问题真是让人抓狂,既然我指定的类型都不行,那我就不指定了还不行吗。

//不指定参数类型
props:["blob"]

修改代码后,运行,果然控制台没报警告了。 中午吃饭的时候和同事说了上午遇到的这个问题,同事说也可以把type指定为null。。回来试了下,牛逼,果然也可以,长知识了。

    //设为null
    blob: {
      type: null,
      required: true
    }

总结

以后碰到子组件接收参数数据类型问题,可以这么解决:

  • 检查父子组件的参数数据类型,确保类型一致;
  • 不指定类型
  • 设为null