最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue組件開發(fā)初探

 更新時(shí)間:2017年02月14日 10:40:43   作者:Taikyo  
本篇文章主要介紹了Vue組件開發(fā)初探,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

注冊一個(gè)組件

有兩種方式可以注冊一個(gè)組件,第一種是全局注冊,第二種是局部注冊

# 全局注冊
Vue.component('my-component',{
  template: '<span>Hello</span>'
})

# 局部注冊
var child = {
  template: '<span>Hello</span>'
}
new Vue({
  // ···
  components:{
    my-component: child
  }
})

注意:組件的注冊必須要在Vue實(shí)例創(chuàng)建之前

使用組件

<div id="app">
  <my-component></my-component>
</div>

當(dāng)我們需要使用到data時(shí),data必須是一個(gè)函數(shù),否則將會(huì)報(bào)錯(cuò),這是Vue的一個(gè)規(guī)則,如下

Vue.component('my-component',{
  template: '<span>{{message}}</span>',
  data:function(){
    return {message:'hello'}
  }
})

組件間消息傳遞

當(dāng)我們封裝了組件A,但是組件A又嵌套了組件B,這時(shí)候組件AB形成了父子組件的關(guān)系,我們應(yīng)該怎么來讓父組件傳遞消息給子組件呢,這里用到了一個(gè)屬性值props,如下

Vue.component('my-component',{
  props: ['message']
  template: '<span>{{message}}</span>'
})

# 通過props傳遞消息給子組件
<my-component message="Hello"></my-component>

上面的例子,我們通過props傳遞了參數(shù)給子組件,確實(shí)能改變子組件的值,但是,假如我們有這樣一個(gè)要求,props的值是動(dòng)態(tài)改變的,那么這種靜態(tài)字面量傳遞參數(shù)的方式就不能滿足我們的需求了。如下將說明如何進(jìn)行動(dòng)態(tài)的props值設(shè)定

<div id="app">
  <input v-model="parentMsg"><br>
  <my-component v-bind:message="parentMsg">
</div>

這里通過v-bind的命令,將我們的message與parentMsg進(jìn)行綁定,這樣,當(dāng)我們的parentMsg改變時(shí),message將能實(shí)時(shí)改變

自定義事件

父子組件之間如果通過props來傳遞數(shù)據(jù)的話,那么似乎只能進(jìn)行單向的數(shù)據(jù)傳遞,只能從父組件向子組件傳遞,假如我們需要從子組件傳遞消息回去,那么就需要用到自定義事件了

# 使用v-on綁定自定義事件
Vue.component('my-component',{
  template: '<button v-on:click="increment">{{counter}}</button>',
  data: function(){
    return {counter: 0}
  },
  methods: {
    increment: function(){
      this.counter += 1;
      this.$emit(increment);
    }
  }
})
new Vue({
  el: '#app',
  data: {
    // ···
    total:0
  },
  methods: {
    // ···
    incrementTotal: function(){
      this.total += 1;

    }
  }
})
<div id="app">
  // ···
  <p>{{total}}</p>
  <my-component v-on:increment="incrementTotal"></my-component>
</div>

這里,我們點(diǎn)擊按鈕,按鈕的顯示的數(shù)值將會(huì)改變,同時(shí),total的值也會(huì)動(dòng)態(tài)的改變,這就是子組件回傳數(shù)據(jù)的實(shí)例,我們點(diǎn)擊按鈕時(shí),將會(huì)首先執(zhí)行button的onclick方法,在onclick方法里面,通過this.$emit('increment')來執(zhí)行我們自定義的事件,假如我們需要在$emit中添加參數(shù),那么我們就要在$on()中進(jìn)行回調(diào)的處理

我們接下來自定義一個(gè)表單輸入控件,我們在輸入框中輸入信息,同時(shí)在P標(biāo)簽中顯示出來。

這里我們平時(shí)使用的

v-model="message"

其實(shí)是下面語句的一個(gè)簡化版本,也就是語法糖

v-bind:value="message" v-on:input="message = arguments[0]"

或者

v-bind:value="message" v-on:input="message = $event.target.value"

那么自定義表單控件我們需要干什么呢?

為了讓v-model生效,我們需要在子組件中定義一個(gè)value的屬性,還有一個(gè)監(jiān)聽新值產(chǎn)生的input事件
來看看我們的自定義控件

復(fù)制代碼 代碼如下:

<my-input label="Message" :value="message" @input="message = arguments[0]"></my-input>

在上面,我們通過 :value="message" 綁定一個(gè)value使其與上一級(jí)組件的message相掛鉤,后面這個(gè) v-on:input 是子組件定義的事件,事件名可以自己定義,arguments[0] 是組件自定義時(shí)傳入的第一個(gè)參數(shù)

完整代碼如下:

# 使用自定義事件的表單輸入控件
Vue.component('my-input',{
  template: '\
  <div>\
  <label>{{label}} :</label>\
  <input v-bind:value="value" v-on:input="onInput"></input>\
  </div>\
  '
  ,
  props:['value','label'],
  methods:{
    onInput:function(event){
      this.$emit('input',event.target.value);
      // this.$emit('input')
    }
  }

})
<div id="app">
  <p>{{message}}</p>
  <my-input label="Message" v-model="message"></my-input><br>
  <!-- <my-input label="Message" :value="message" @input="message = arguments[0]"></my-input> -->

</div>

我們在定義內(nèi)部事件時(shí),調(diào)用到了$emit(),為了讓message能動(dòng)態(tài)改變,我們需要將輸入的參數(shù)回傳回去,這樣才能使外部組件與我們的表單控件顯示一致

Vue組件的就先寫到這,接下來還有事件分發(fā),就接下來再寫。由于理解的不同,可能有寫得不好的,所以有錯(cuò)誤的地方請指正。

相關(guān)文章

  • 使用Vue.js報(bào)錯(cuò):ReferenceError: “Vue is not defined“ 的原因與解決方案

    使用Vue.js報(bào)錯(cuò):ReferenceError: “Vue is not d

    在前端開發(fā)中,ReferenceError: "Vue is not defined" 是一個(gè)常見的錯(cuò)誤,該錯(cuò)誤通常發(fā)生在項(xiàng)目中未正確引入 Vue.js 框架或代碼配置存在問題時(shí),本篇文章將詳細(xì)分析該錯(cuò)誤的成因,并提供多種解決方案,幫助開發(fā)者快速排查問題,需要的朋友可以參考下
    2024-12-12
  • 部署Vue項(xiàng)目到服務(wù)器后404錯(cuò)誤的原因及解決方案

    部署Vue項(xiàng)目到服務(wù)器后404錯(cuò)誤的原因及解決方案

    文章介紹了Vue項(xiàng)目部署步驟以及404錯(cuò)誤的解決方案,部署步驟包括構(gòu)建項(xiàng)目、上傳文件、配置Web服務(wù)器、重啟Nginx和訪問域名,404錯(cuò)誤通常是由于歷史模式問題導(dǎo)致的,解決方法是修改Nginx配置,將所有頁面請求重定向到index.html,并在Vue應(yīng)用中覆蓋所有路由情況
    2025-02-02
  • vue函數(shù)防抖與節(jié)流的正確使用方法

    vue函數(shù)防抖與節(jié)流的正確使用方法

    防抖和節(jié)流的作用都是防止函數(shù)多次調(diào)用,下面這篇文章主要給大家介紹了關(guān)于vue函數(shù)防抖與節(jié)流的正確使用方法,需要的朋友可以參考下
    2021-05-05
  • Vue2.0 $set()的正確使用詳解

    Vue2.0 $set()的正確使用詳解

    這篇文章主要介紹了Vue2.0 $set()的正確使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue實(shí)現(xiàn)DOM元素拖放互換位置示例

    Vue實(shí)現(xiàn)DOM元素拖放互換位置示例

    本文主要介紹了Vue實(shí)現(xiàn)DOM元素拖放互換位置示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的方法代碼

    Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的方法代碼

    這篇文章主要給大家介紹了關(guān)于Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的相關(guān)資料,Pinia是Vue.js的官方狀態(tài)管理庫,輕量且功能強(qiáng)大,支持模塊化和TypeScript,PiniaPluginPersistedState是一個(gè)插件,需要的朋友可以參考下
    2024-11-11
  • Vue自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的方法

    Vue自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的方法

    這篇文章主要介紹了Vue自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的方法,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-11-11
  • vue項(xiàng)目通過a標(biāo)簽下載圖片至zip包的示例代碼

    vue項(xiàng)目通過a標(biāo)簽下載圖片至zip包的示例代碼

    在vue項(xiàng)目中,將圖片下載可使用流的形式,下載成單個(gè)圖片,或者將多個(gè)圖片下載至zip包,本文就是介紹使用a標(biāo)簽下載圖片的用法,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-10-10
  • 在vue中使用cookie記住用戶上次選擇的實(shí)例(本次例子中為下拉框)

    在vue中使用cookie記住用戶上次選擇的實(shí)例(本次例子中為下拉框)

    這篇文章主要介紹了在vue中使用cookie記住用戶上次選擇的實(shí)例(本次例子中為下拉框),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue中利用three.js實(shí)現(xiàn)全景圖的完整示例

    vue中利用three.js實(shí)現(xiàn)全景圖的完整示例

    這篇文章主要給大家介紹了關(guān)于vue中利用three.js實(shí)現(xiàn)全景圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論

斗六市| 类乌齐县| 林口县| 肥西县| 无棣县| 乐东| 澄江县| 黄山市| 孟连| 钟山县| 麟游县| 丰宁| 广宁县| 湟中县| 隆化县| 会同县| 关岭| 平安县| 漠河县| 新邵县| 中西区| 清原| 伊春市| 清远市| 射洪县| 元江| 道真| 财经| 驻马店市| 穆棱市| 瑞安市| 鹤庆县| 亳州市| 维西| 关岭| 延长县| 延吉市| 饶平县| 临桂县| 富阳市| 厦门市|