Invalid prop: type check failed for prop "radius". Expected Number, got String.

﹏ヽ暗。殇╰゛Y 2022-05-23 13:10 289阅读 0赞

在vue编写的项目中,在浏览器的console报错:

  1. Invalid prop: type check failed for prop "radius". Expected Number, got String.

如下图所示:

20180609152645979

在子组件progress-circle.vue的template中的定义如下:

  1. <svg :width="radius" :height="radius" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg>

在子组件progress-circle.vue的script中的props实现那个定义如下:radius和percent都是从父组件传递过来的数据

  1. props: {
  2. radius: {
  3. type: Number,
  4. default: 100
  5. },
  6. percent: {
  7. type: Number,
  8. default: 0
  9. }
  10. }

父组件player.vue中引用progress-circle子组件

  1. <progress-circle radius="32" :percent="percent">

然后就包上面的错误了。

分析:由于radius是从父组件传递给子组件的数据,在父组件中定义的时候是直接定义一个变量而不是绑定一个变量,那么当传递给子组件 的时候这个变量的值是一个字符串。但是在子组件中radius的类型是number,因此该变量应该还是要绑定传给子组件的。

解决的方法:只需要在父组件player.vue中做改变,在父组件中的定义如下

  1. <progress-circle :radius="radius" :percent="percent">

在player.vue的data中定义一个变量radius,如下所示

  1. data() {
  2. return {
  3. //防止快速点击造成的bug
  4. songReady: false,
  5. currentTime: 0,
  6. radius: 32
  7. }
  8. }

发表评论

表情:
评论列表 (有 0 条评论,289人围观)

还没有评论,来说两句吧...

相关阅读