vue组件之prop

作者: ferrint | 来源:发表于2017-03-05 14:21 被阅读9865次

关键词:prop

渐进式探索学习(官网的例子)

    <div id="demo">
        <child message="hello!"></child>
    </div>

Vue.component('child', {
  // 声明 props
  props: ['message'],
  // 就像 data 一样,prop 可以用在模板内
  // 同样也可以在 vm 实例中像 “this.message” 这样使用
  template: '<span>{{ message }}</span>'
})
    var vm = new Vue({
    
        el: "#demo"
    
    })

来个复杂点的,实现父组件向子组件传数据

    Vue.component('child', {
  props: ['message'],
  template: `
  <div>
     <h3>{{title}}</h3>
     <p>{{ message }}</p>
  </div>
  `,
  data(){
     return { title: '越人歌' }   // 注意写成函数形式
  }
})
    var vm = new Vue({
        el: "#demo",
        data:{
            poem:['山有木兮木有枝','心悦君兮君不知']
        }
    })

传两个数据试试

Vue.component('child', {
  props: ['message','time'],
  template: `
  <div>
     <h3>{{title}}</h3>
     <p>{{ message }}</p>
     <i>{{time}}</i>
  </div>
  `,
  data(){
     return { title: '越人歌' }
  }
})
    var vm = new Vue({
        el: "#demo",
        data:{
            poem:['山有木兮木有枝','心悦君兮君不知'],
            age:'3000年'
        }
    })
    <div id="demo">
        <child v-for= "item1 in poem":message="item1" :time="age"></child>
    </div>

Prop 验证

组件可以为 props 指定验证要求。如果未指定验证要求,Vue 会发出警告。当组件给其他人使用时这很有用。
prop 是一个对象而不是字符串数组时,它包含验证要求:

Vue.component('example', {
  props: {
    // 基础类型检测 (`null` 意思是任何类型都可以)
    propA: Number,
    // 多种类型
    propB: [String, Number],
    // 必传且是字符串
    propC: {
      type: String,
      required: true
    },
    // 数字,有默认值
    propD: {
      type: Number,
      default: 100
    },
    // 数组/对象的默认值应当由一个工厂函数返回
    propE: {
      type: Object,
      default: function () {
        return { message: 'hello' }
      }
    },
    // 自定义验证函数
    propF: {
      validator: function (value) {
        return value > 10
      }
    }
  }
})

这时候我们再来改写一下

    Vue.component('child', {
  props: {
    'time': {    
       type: Number,
       default: 1000
      },
    'message' :{
        type: Object,
        default: function () {
        return { message: 'hello' }
      }
    } 
  },

  template: `
  <div>
     <h3>{{title}}</h3>
     <p>{{ message }}</p>
     <i>{{time}}</i>
  </div>
  `,
  data(){
     return { title: '越人歌' }
  }
})
    var vm = new Vue({
    
        el: "#demo",
        data:{
            poem:['山有木兮木有枝','心悦君兮君不知'],
            /*age:3000*/
        }
    })
    <div id="demo">
        <child v-for= "item1 in poem":message="item1"></child>
    </div>

相关文章

  • vue组件之prop

    关键词:prop 渐进式探索学习(官网的例子) 来个复杂点的,实现父组件向子组件传数据 传两个数据试试 Prop ...

  • Vue组件之Prop

    在使用prop之前,先注意一下官网的命名提示:HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释...

  • 对vue的props实现双向数据流

    1、 使用Prop需要遵守的规定 vue官网中规定,vue中的Prop是单向数据流 在vue中,组件中的Prop是...

  • Vue组件深入

    vue组件深入 组件注册 全局注册 局部注册 prop prop的大小写 camelCase vs Kebab-c...

  • vue组件通信(父子)

    在 Vue 中,父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop 给子组件下发数据...

  • vue 组件通信

    本文主要解决vue组件之间的通信问题 Prop 向下传递,事件向上传递 Prop (主要用于父组件向子组件下发数据...

  • vue 组件 prop

    手册 HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。这意味着当你使用 DOM 中...

  • vue 组件 - prop

    prop 是什么 prop 是你可以在组件上注册的一些自定义特性。当一个值传递给一个 prop 特性的时候,它就变...

  • Vue学习记录

    vue data 组件定义只接受 function 父子组件属性传递: 父组件的子组件中 v-bind :prop...

  • vue prop

    问题描述在vue项目中,父组件通过prop给子组件传值时,如果prop值是从服务器端获取,则父组件可能会传给子组件...

网友评论

    本文标题:vue组件之prop

    本文链接:https://www.haomeiwen.com/subject/pwnsgttx.html