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

vue父子組件傳值以及單向數(shù)據(jù)流問題詳解

 更新時(shí)間:2021年09月08日 16:01:50   作者:丶Serendipity丶  
大家應(yīng)該都知道父組件可以向子組件通過屬性形式傳遞參數(shù),傳遞的參數(shù)也可以隨時(shí)隨意修改;但子組件不能修改父組件傳遞過來的參數(shù),所以下面這篇文章主要給大家介紹了關(guān)于vue父子組件傳值以及單向數(shù)據(jù)流問題的相關(guān)資料,需要的朋友可以參考下

前言

我們知道 vue 中父子組件的核心概念是單向數(shù)據(jù)流問題,props 是單向傳遞的。那究竟什么是單向數(shù)據(jù)流問題,這篇文章來總結(jié)一下關(guān)于這個(gè)知識(shí)點(diǎn)的學(xué)習(xí)筆記。

1.父組件傳值給子組件

<div id="app">
    <blog-item :title="title"></blog-item>
</div>
// 定義子組件
Vue.component("blog-item", {
      props: ['title'],
      data() {
        return {
        }
      },
      template: "<p>{{title}}</p>"
 })
// 定義父組件
new Vue({
      el: "#app",
      data() {
        return {
          title: "msg",
        }
      },
    })

父組件通過  :title = "title" 將值傳遞給子組件,子組件中通過 props 來接收父組件的值,然后通過插值表達(dá)式渲染在頁面中。

2.子組件的 props 類型約束問題

常見的類型約束如下:

props: {
      title: String,
      likes: Number,
      isPublished: Boolean,
      commentIds: Array,
      author: Object,
      callback: Function,
      contactsPromise: Promise // or any other constructor
    }

除了上面常見的類型外,vue 還提供了構(gòu)造函數(shù)和自定義函數(shù)來自定義子組件 props 的類型。

(1)構(gòu)造函數(shù)自定義類型

//兩個(gè)組件公共的自定義函數(shù)
      function Person (firstName, lastName) {
        this.firstName = firstName
        this.lastName = lastName
      }
      //子組件中使用
      Vue.component('blog-post', {
      props: {
        author: Person
      }
      //父組件中使用
      var obj = new Person("1","2")
      <blog-post :author='obj'></blog-post>

上面的代碼中,首先定義一個(gè)公共的自定義構(gòu)造函數(shù),通過該構(gòu)造函數(shù)來可以來創(chuàng)建一個(gè)對象,該實(shí)例對象有兩個(gè)屬性,分別是 firstName 和 lastName,在父組件中調(diào)用該構(gòu)造函數(shù)創(chuàng)建一個(gè) obj 實(shí)例并傳遞給子組件,子組件定義類型為構(gòu)造函數(shù)的 prop 接收該對象。

(2)自定義函數(shù)自定義類型

// 自定義函數(shù)
     Vue.component('blog-post', {
      props: {
        propsA: String,//必須是字符串類型
        propsB: [String,Number],//多個(gè)可選的類型
        propsC: {type:Number,default:100},//定義類型并設(shè)置默認(rèn)值
        // 自定義驗(yàn)證函數(shù)
        propsD:{
          validator: function (value) {
            // 這個(gè)值必須匹配下列字符串中的一個(gè)
            return ['success', 'warning', 'danger'].indexOf(value) !== -1
         }
        }
      }

vue 中提供了非常靈活的來自定義子組件接收參數(shù)的類型,上面的代碼中通過自定義了驗(yàn)證函數(shù)來約束父組件中的傳值類型。

3.單向數(shù)據(jù)流問題

單向數(shù)據(jù)流是vue 中父子組件的核心概念,props 是單向綁定的。當(dāng)父組件的屬性值發(fā)生變化的時(shí)候,會(huì)傳遞給子組件發(fā)生相應(yīng)的變化,從而形成一個(gè)單向下行的綁定,父組件的屬性改變會(huì)流向下行子組件中,但是反之,為了防止子組件無意間修改了父組件中的數(shù)據(jù)而影響到了其他的子組件的狀態(tài),vue 規(guī)定了從下往上的數(shù)據(jù)流是不允許的。

當(dāng)父組件的屬性改變,會(huì)傳遞給子組件,而子組件的屬性改變不會(huì)影響父組件,這樣的話可能會(huì)覺得 props 有點(diǎn)雞肋了,只能初始化組件的時(shí)候使用,在子組件內(nèi)不能進(jìn)行操作,因此我們在使用的時(shí)候經(jīng)常有兩種板房去操作props:(1)定義一個(gè)局部變量,并用props 初始化它,以后操作這個(gè)局部變量。(2)定義一個(gè)計(jì)算屬性,處理props并返回。

<div id="app">
    <blog-item :title="title1"></blog-item>
    <blog-item :title="title2"></blog-item>
    <blog-item :title="title3"></blog-item>
    <hr>
    <button @click='toclick'>點(diǎn)我</button>
  </div>
  // 定義子組件
    Vue.component("blog-item", {
      props: ['title'],
      data() {
        return {
        }
      },
      template: "<p>{{title}}</p>"
    })
    // 父組件
    new Vue({
      el: "#app",
      data() {
        return {
          title1: "111",
          title2: "222",
          title3: "333"
        }
      },
      methods: {
        toclick() {
          this.title3 = "000"
        }
      }
    })

<div id="app">
    <blog-item :title="title"></blog-item>
  </div>
  // 定義子組件
    Vue.component("blog-item", {
      props: ['title'],
      computed: {
        computedTitle() {
          return "computedTitle" + this.title
        }
      },
      data() {
        return {
          subTitle: "subTitle" + this.title
        }
      },
      template: "<p>{{title}}==={{subTitle}}==={{computedTitle}}</p>"
    })
    // 父組件
    new Vue({
      el: "#app",
      data() {
        return {
          title: "111",
        }
      },
    })

總結(jié)

到此這篇關(guān)于vue父子組件傳值以及單項(xiàng)數(shù)據(jù)流問題的文章就介紹到這了,更多相關(guān)vue父子組件傳值及單項(xiàng)數(shù)據(jù)流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue圖片懶加載代碼實(shí)現(xiàn)

    vue圖片懶加載代碼實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于vue圖片懶加載代碼實(shí)現(xiàn)的相關(guān)資料,所謂圖片懶加載是指當(dāng)我們?yōu)g覽頁面時(shí),只加載我們?yōu)g覽器可視區(qū)的圖片,向下滾動(dòng)時(shí)再繼續(xù)加載后面的圖片,需要的朋友可以參考下
    2023-07-07
  • Vue使用xlsx和xlsx-style導(dǎo)出表格出現(xiàn)部分樣式缺失的問題解決

    Vue使用xlsx和xlsx-style導(dǎo)出表格出現(xiàn)部分樣式缺失的問題解決

    這篇文章主要為大家詳細(xì)介紹一下Vue使用xlsx-style導(dǎo)出excel時(shí)樣式的設(shè)置,以及出現(xiàn)添加背景色,合并單元格部分樣式缺失問題的解決,需要的可以參考下
    2024-01-01
  • vue與ant-tree結(jié)合偽造懶加載并可以查詢

    vue與ant-tree結(jié)合偽造懶加載并可以查詢

    這篇文章主要為大家介紹了vue與ant-tree結(jié)合偽造懶加載并可以查詢實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • elementui實(shí)現(xiàn)表格(el-table)默認(rèn)選中功能

    elementui實(shí)現(xiàn)表格(el-table)默認(rèn)選中功能

    這篇文章主要介紹了elementui實(shí)現(xiàn)表格(el-table)默認(rèn)選中功能,本文給大家分享實(shí)現(xiàn)思路結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-07-07
  • Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證的流程

    Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證的流程

    這篇文章主要介紹了Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證?,Vue.js?和?Django?編寫的前后端項(xiàng)目中,實(shí)現(xiàn)了基于?Token?的身份驗(yàn)證機(jī)制,其他前后端框架的?Token?實(shí)現(xiàn)原理與本文一致,需要的朋友可以參考下
    2022-08-08
  • vue中表格設(shè)置某列樣式、不顯示表頭問題

    vue中表格設(shè)置某列樣式、不顯示表頭問題

    這篇文章主要介紹了vue中表格設(shè)置某列樣式、不顯示表頭問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue項(xiàng)目中缺少明顯入口文件的原因及解決策略

    Vue項(xiàng)目中缺少明顯入口文件的原因及解決策略

    本文探討了Vue項(xiàng)目中缺少明顯入口文件的原因,并提供了解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • vue中使用refs定位dom出現(xiàn)undefined的解決方法

    vue中使用refs定位dom出現(xiàn)undefined的解決方法

    本篇文章主要介紹了vue中使用refs定位dom出現(xiàn)undefined的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • 一文搞懂Vue八大生命周期鉤子函數(shù)

    一文搞懂Vue八大生命周期鉤子函數(shù)

    這篇文章主要介紹了Vue八大生命周期鉤子函數(shù),生命周期函數(shù),就是在某個(gè)時(shí)刻會(huì)自動(dòng)執(zhí)行的函數(shù),本文帶你了解八大生命周期鉤子函數(shù),一起來看看吧
    2023-03-03
  • Vue如何在CSS中使用data定義的數(shù)據(jù)淺析

    Vue如何在CSS中使用data定義的數(shù)據(jù)淺析

    這篇文章主要給大家介紹了關(guān)于Vue如何在CSS中使用data定義的數(shù)據(jù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

惠水县| 五大连池市| 闻喜县| 绵竹市| 五峰| 汽车| 萝北县| 刚察县| 马关县| 大竹县| 左贡县| 内江市| 云和县| 穆棱市| 包头市| 周至县| 嘉黎县| 全南县| 闵行区| 清徐县| 泽普县| 长宁县| 南丰县| 阿勒泰市| 佛山市| 扶余县| 吴堡县| 长垣县| 静海县| 台山市| 富川| 浦城县| 秦安县| 神农架林区| 全椒县| 伊吾县| 邯郸市| 北安市| 安阳县| 云南省| 葵青区|