vue組件之prop

關(guān)鍵詞:prop

漸進(jìn)式探索學(xué)習(xí)(官網(wǎng)的例子)

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

Vue.component('child', {
  // 聲明 props
  props: ['message'],
  // 就像 data 一樣,prop 可以用在模板內(nèi)
  // 同樣也可以在 vm 實(shí)例中像 “this.message” 這樣使用
  template: '<span>{{ message }}</span>'
})
    var vm = new Vue({
    
        el: "#demo"
    
    })

來個(gè)復(fù)雜點(diǎn)的,實(shí)現(xiàn)父組件向子組件傳數(shù)據(jù)

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

傳兩個(gè)數(shù)據(jù)試試

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 驗(yàn)證

組件可以為 props 指定驗(yàn)證要求。如果未指定驗(yàn)證要求,Vue 會(huì)發(fā)出警告。當(dāng)組件給其他人使用時(shí)這很有用。
prop 是一個(gè)對(duì)象而不是字符串?dāng)?shù)組時(shí),它包含驗(yàn)證要求:

Vue.component('example', {
  props: {
    // 基礎(chǔ)類型檢測(cè) (`null` 意思是任何類型都可以)
    propA: Number,
    // 多種類型
    propB: [String, Number],
    // 必傳且是字符串
    propC: {
      type: String,
      required: true
    },
    // 數(shù)字,有默認(rèn)值
    propD: {
      type: Number,
      default: 100
    },
    // 數(shù)組/對(duì)象的默認(rèn)值應(yīng)當(dāng)由一個(gè)工廠函數(shù)返回
    propE: {
      type: Object,
      default: function () {
        return { message: 'hello' }
      }
    },
    // 自定義驗(yàn)證函數(shù)
    propF: {
      validator: function (value) {
        return value > 10
      }
    }
  }
})

這時(shí)候我們?cè)賮砀膶懸幌?/p>

    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>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,174評(píng)論 0 29
  • 1.安裝 可以簡(jiǎn)單地在頁面引入Vue.js作為獨(dú)立版本,Vue即被注冊(cè)為全局變量,可以在頁面使用了。 如果希望搭建...
    Awey閱讀 11,294評(píng)論 4 129
  • 此文基于官方文檔,里面部分例子有改動(dòng),加上了一些自己的理解 什么是組件? 組件(Component)是 Vue.j...
    陸志均閱讀 3,945評(píng)論 5 14
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,368評(píng)論 0 6
  • 八 三讓徐州 敘曹操親領(lǐng)大軍進(jìn)攻徐州,劉備出兵援救。曹操因呂布襲取兗州、濮陽,只得回兵,被呂布所敗。徐州太...
    丫丫zyc閱讀 314評(píng)論 0 1

友情鏈接更多精彩內(nèi)容