Vue组件的props

props是Vue实例上的一个属性

是组件的自定义属性,我们在封装通用组件的时候合理使用props可以很大限度的提高组件的一个复用性

目录

了解与使用props

 props的default属性

 props的type属性

 prop的required必填项


我们想要使用data来进行交互-->(点击按钮加1):



Vue组件的props_第1张图片

我们现在给data中的变量赋值,对data数据进行操作,如果想要让用户自己给到一个初始值的话,data是不可能实现的,这时我们就需要用到props属性(props中的数据可以直接在模板结构中使用)


了解与使用props

export default {
  props:['test'],
  data(){
    return{
      num:0
    }
  }
}

{{ test }}

Vue组件的props_第2张图片

Vue组件的props_第3张图片 

这样用户就可以自定义初始值了

可是现在又出现了一个这样的问题:虽然数值可以加上去,可以实现我们想要的功能,却报错了

Vue组件的props_第4张图片

 错误显示我们是不能直接修改prop值的,因为这个值将来在组件变更的时候可能会出现被覆盖的情况

那么说明prop其实是一个仅可读的

那么没有解决方法了吗?

那是不可能的

我们可以把props中的test值给到data中的num值,我们在页面上使用data中的num值进行显示:




 props的default属性

在声明自定义属性时,如果我们没有给到num数值的话,可以通过default来定义属性的默认值,当然,这时我们就不可以继续使用数组的形式了,我们需要使用对象来指定:

当外界使用该组件的时候,如果没有传递test属性,那么默认值会生效

相反:如果传递了test属性,那么就会以传递的test属性为准:

export default {
  props:{
    test:{
      default:2
    }
  },
  data(){
    return{
      num:this.test
    }
  }
}

Vue组件的props_第5张图片


 props的type属性

在声明一个自定义属性的时候,我们可以通过type来定义属性的值类型,我们规定为数值型,那么必须输入数值型,输入其他的数据类型就会报错;我们规定为object对象类型,那么就必须输入一个对象,输入其他数据类型就会报错:

export default {
  props:{
    test:{
      default:2,
      type:Number
    }
  },
  data(){
    return{
      num:this.test
    }
  }
}

Vue组件的props_第6张图片


 prop的required必填项

必填项效验

export default {
  props:{
    test:{
      default:2,
      type:Number,
      required:true
    }
  },
  data(){
    return{
      num:this.test
    }
  }
}

就算配置了默认值,如果你不填写数值的话,也是会报错的

就像这样:

你可能感兴趣的:(+,Vue,2,vue.js,vue,前端框架,props,自定义属性)