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

Vue中props的詳解

 更新時(shí)間:2019年05月16日 11:10:31   作者:jingtian678  
這篇文章主要介紹了Vue中props的詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

看一下官方文檔:

組件實(shí)例的作用域是孤立的。這意味著不能 (也不應(yīng)該) 在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。父組件的數(shù)據(jù)需要通過(guò) prop 才能下發(fā)到子組件中。

也就是props是子組件訪問(wèn)父組件數(shù)據(jù)的唯一接口。

詳細(xì)一點(diǎn)解釋就是:

一個(gè)組件可以直接在模板里面渲染data里面的數(shù)據(jù)(雙大括號(hào))。

子組件不能直接在模板里面渲染父元素的數(shù)據(jù)。

如果子組件想要引用父元素的數(shù)據(jù),那么就在prop里面聲明一個(gè)變量(比如a),這個(gè)變量就可以引用父元素的數(shù)據(jù)。然后在模板里渲染這個(gè)變量(前面的a),這時(shí)候渲染出來(lái)的就是父元素里面的數(shù)據(jù)。

1. 基本用法

圖1-props

 <div id="app1">
    <!-- hello引用父元素的hello,它也可以引用message,greet,world等 -->
    <child :hello='hello'></child>
  </div>
  <script>
    var com1 = Vue.component('child',{
      // 聲明在prop中的變量可以引用父元素的數(shù)據(jù)
      props:['hello'],
      // 這里渲染props中聲明的那個(gè)hello
      template:'<div><p>{{ hello }}</p></div>',
    })
 
    var app1 = new Vue ({
      el: '#app1',
      data: {
        greet: {
          hello:'hello,',
          world: 'world',
        },
        message: 'message1',
      }
    })
  </script>

2. camelCase vs. kebab-case:js中用駝峰式命名,在html中替換成短橫線分隔式命名

<!-- 在 HTML 中使用 kebab-case -->
<child my-message="hello!"></child>
 
<script>
  Vue.component('child', {
    // 在 JavaScript 中使用 camelCase
    props: ['myMessage'],
    template: '<span>{{ myMessage }}</span>'
  })
</script>

3.單向數(shù)據(jù)流: props是單向綁定的

當(dāng)父組件的屬性變化時(shí),將傳導(dǎo)給子組件,但是反過(guò)來(lái)不會(huì)。

每次父組件更新時(shí),子組件的所有 prop 都會(huì)更新為最新值。

不要在子組件內(nèi)部改變 prop。如果你這么做了,Vue 會(huì)在控制臺(tái)給出警告。

在兩種情況下,我們很容易忍不住想去修改 prop 中數(shù)據(jù):

  1. Prop 作為初始值傳入后,子組件想把它當(dāng)作局部數(shù)據(jù)來(lái)用;
  2. Prop 作為原始數(shù)據(jù)傳入,由子組件處理成其它數(shù)據(jù)輸出。

對(duì)這兩種情況,正確的應(yīng)對(duì)方式是:
定義一個(gè)局部變量,并用 prop 的值初始化它:

 props: ['initialCounter'],
  data: function () {
   return { counter: this.initialCounter }
  }

定義一個(gè)計(jì)算屬性,處理 prop 的值并返回:

 props: ['size'],
  computed: {
   normalizedSize: function () {
    return this.size.trim().toLowerCase()
   }
  }

注意在 JavaScript 中對(duì)象和數(shù)組是引用類型,指向同一個(gè)內(nèi)存空間,如果 prop 是一個(gè)對(duì)象或數(shù)組,在子組件內(nèi)部改變它會(huì)影響父組件的狀態(tài)。

舉個(gè)例子:

 <div id="app3">
    <my-component :object='object'></my-component>
  </div>
  <script src="http://vuejs.org/js/vue.min.js"></script>
  <script>
    //
    var mycom = Vue.component('my-component', {
      //添加一個(gè)input改變子組件的childOject,那么父元素的object也會(huì)被改變,但是Vue沒(méi)有報(bào)錯(cuò)!
      template: '<p>{{ object.name }} is {{ object.age }} years old.<br><input v-model="childObject.name" type="text"></p>',
      props: ['object','school'],
      data: function () {
        // 子組件的childObject 和 父組件的object 指向同一個(gè)對(duì)象
        return {
          childObject: this.object
        }
      }
    });
    var app3 = new Vue({
      el: '#app3',
      data: {
        object:{
          name: 'Xueying',
          age: '21',
        },
        school:'SCUT',
      },
    })
  </script>

圖2-改變childObject.name,object.name也改變

圖3-控制臺(tái)輸出app3.object.name

4. props驗(yàn)證

可以為prop指定驗(yàn)證規(guī)則,如果傳入的數(shù)據(jù)不符合要求,Vue會(huì)發(fā)出警告。

具體驗(yàn)證規(guī)則見(jiàn)官方文檔:Prop驗(yàn)證規(guī)則

5. $parent

$parent 也可以用來(lái)訪問(wèn)父組件的數(shù)據(jù)。

而且子組件可以通過(guò)$parent 來(lái)直接修改父組件的數(shù)據(jù),不會(huì)報(bào)錯(cuò)!

可以使用props的時(shí)候,盡量使用props顯式地傳遞數(shù)據(jù)(可以很清楚很快速地看出子組件引用了父組件的哪些數(shù)據(jù))。

另外在一方面,直接在子組件中修改父組件的數(shù)據(jù)是很糟糕的做法,props單向數(shù)據(jù)流就沒(méi)有這種顧慮了。

以上所述是小編給大家介紹的Vue中props的詳解詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue項(xiàng)目中使用自定義字體樣式方式

    Vue項(xiàng)目中使用自定義字體樣式方式

    這篇文章主要介紹了Vue項(xiàng)目中使用自定義字體樣式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue 項(xiàng)目 iOS WKWebView 加載

    vue 項(xiàng)目 iOS WKWebView 加載

    這篇文章主要介紹了vue 項(xiàng)目 iOS WKWebView 加載問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • vue單向數(shù)據(jù)流的深入講解

    vue單向數(shù)據(jù)流的深入講解

    單向數(shù)據(jù)流方式使用一個(gè)上傳數(shù)據(jù)流和一個(gè)下傳數(shù)據(jù)流進(jìn)行雙向數(shù)據(jù)通信,兩個(gè)數(shù)據(jù)流之間相互獨(dú)立,下面這篇文章主要給大家介紹了關(guān)于vue單向數(shù)據(jù)流的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn)

    部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn)

    這篇文章主要介紹了部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • vue-resource?獲取本地json數(shù)據(jù)404問(wèn)題的解決

    vue-resource?獲取本地json數(shù)據(jù)404問(wèn)題的解決

    這篇文章主要介紹了vue-resource?獲取本地json數(shù)據(jù)404問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue3 定義使用全局變量的示例詳解

    vue3 定義使用全局變量的示例詳解

    全局變量(函數(shù)等)可以在任意組件內(nèi)訪問(wèn),可以當(dāng)組件間的傳值使用,這篇文章給大家介紹vue3 定義使用全局變量的示例詳解,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • vue3 Composition API使用示例教程

    vue3 Composition API使用示例教程

    Vue3新增了Composition API,我們只需將實(shí)現(xiàn)某一功能的相關(guān)代碼全部放進(jìn)一個(gè)函數(shù)中,然后return需要對(duì)外暴露的對(duì)象,這篇文章主要介紹了vue3 Composition API使用,需要的朋友可以參考下
    2022-12-12
  • 使用vue和element-ui上傳圖片及視頻文件方式

    使用vue和element-ui上傳圖片及視頻文件方式

    這篇文章主要介紹了使用vue和element-ui上傳圖片及視頻文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Object.assign觸發(fā)watch原理示例解析

    Object.assign觸發(fā)watch原理示例解析

    這篇文章主要為大家介紹了Object.assign觸發(fā)watch原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • mpvue全局引入sass文件的方法步驟

    mpvue全局引入sass文件的方法步驟

    這篇文章主要介紹了mpvue全局引入sass文件的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論

静宁县| 昌黎县| 蒲江县| 如皋市| 徐州市| 乌兰县| 陵水| 增城市| 宜州市| 舒兰市| 沁阳市| 饶河县| 丹凤县| 教育| 麻阳| 枣强县| 梁山县| 淳化县| 阜平县| 石首市| 滨州市| 梅河口市| 读书| 视频| 噶尔县| 中宁县| 巴东县| 谢通门县| 沙雅县| 紫金县| 蓬安县| 石城县| 无锡市| 龙里县| 页游| 潞西市| 承德市| 太仓市| 禄劝| 富阳市| 辉县市|