欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年07月15日 09:32:34   作者:韜光養(yǎng)晦,厚積薄發(fā)  
單向數(shù)據(jù)流方式使用一個上傳數(shù)據(jù)流和一個下傳數(shù)據(jù)流進行雙向數(shù)據(jù)通信,兩個數(shù)據(jù)流之間相互獨立,下面這篇文章主要給大家介紹了關(guān)于vue單向數(shù)據(jù)流的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

vue單向數(shù)據(jù)流

在vue中需要遵循單向數(shù)據(jù)流原則

  • 在父傳子的前提下,父組件的數(shù)據(jù)發(fā)生會通知子組件自動更新
  • 子組件內(nèi)部,不能直接修改父組件傳遞過來的props => props是只讀的

代碼示例

父組件代碼:

<template>
  <div style="border: 1px solid #000">
    <h1>我是父組件</h1>
    <Son :info="info" :person="person"></Son>
    <button @click="fn">修改數(shù)據(jù)(父)</button>
  </div>
</template>

<script>
import Son from "./Son.vue";
export default {
  data() {
    return {
      info: "我是父組件中的數(shù)據(jù)",
      person: ["張三", "李四", "趙六"],
    };
  },
  components: {
    Son,
  },
  methods: {
    fn() {
      this.info = "我是父組件中點擊修改后的數(shù)據(jù)";
    },
  },
};
</script>

<style scoped>
</style>

子組件代碼:

<template>
  <div>
    <h2>我是子組件</h2>
    <p>{{ info }}</p>
    <p v-for="(item, index) in person" :key="index">{{ item }}</p>
    <button @click="fn">修改數(shù)據(jù)(子)</button>
  </div>
</template>

<script>
export default {
  props: ["info", "person"],
  methods: {
    fn() {
      // 修改基本數(shù)據(jù)類型
      this.info = this.info + ",我現(xiàn)在被傳遞到子組件中";
      // 修改引用數(shù)據(jù)類型
      // this.person.push("韓七");
    },
  },
};
</script>

<style scoped>
div {
  border: 1px solid red;
  margin: 10px;
}
</style>

當我們在父組件中點擊按鈕時,會將父組件中的數(shù)據(jù)進行修改,這樣子組件通過props接收的數(shù)據(jù)也會隨之改變,這就印證了vue遵循單向數(shù)據(jù)流的第一條原則,在父傳子的前提下,父組件的數(shù)據(jù)發(fā)生變化會通知子組件自動更新

當我們在子組件中點擊按鈕時,我們將父組件傳遞過來的數(shù)據(jù)進行修改,此時在子組件中數(shù)據(jù)得到修改,但是會報錯,并且,父組件中的數(shù)據(jù)不會發(fā)生改變

然后我們用vue調(diào)試工具再來看一下,子組件中的數(shù)據(jù)發(fā)生變化,父組件的數(shù)據(jù)有沒有跟著一起變化

從上面可見知道,父組件的數(shù)據(jù)發(fā)生變化會通知子組件自動更新,但是修改子組件通過props從父組件接收的數(shù)據(jù)時,它不會通知父組件自動更新,

特殊情況

上面講述的是將基本數(shù)據(jù)類型改變會報錯,那么將引用數(shù)據(jù)類型改變會不會報錯呢,答案是否定的,如果父組件傳給子組件的是一個引用數(shù)據(jù)類型,這里用數(shù)組為例,子組件修改數(shù)組內(nèi)的元素,是不會報錯的,數(shù)組是引用類型,互相更新,但不能改變引用地址,下面看一下效果

先將子組件內(nèi)的點擊事件處理函數(shù)要改變的數(shù)據(jù)從基本數(shù)據(jù)類型改為引用數(shù)據(jù)類型,然后點擊按鈕來看一下父組件和子組件中的數(shù)據(jù)有沒有同步更新

這樣就驗證了數(shù)據(jù)需要遵循單向數(shù)據(jù)流原則的第二點(特殊情況除外),通過子組件直接修改父組件傳遞過來的props,這樣是非常不建議的,他會影響后續(xù)不同狀態(tài)下數(shù)據(jù)。

注意點:

在vue中需要遵循單向數(shù)據(jù)流原則

  1. 在父傳子的前提下,父組件的數(shù)據(jù)發(fā)生會通知子組件自動更新
  2. 子組件內(nèi)部,不能直接修改父組件傳遞過來的props => props是只讀的

最后說明下 : 父組件傳給子組件的是一個對象,子組件修改對象的屬性,是不會報錯的,對象是引用類型, 互相更新;但不能改變引用地址.

總結(jié)

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

相關(guān)文章

  • vue封裝axios的幾種方法

    vue封裝axios的幾種方法

    在vue中最常用的應(yīng)該就是axios了,這是一個很強大的處理ajax的庫。今天我就分享一下我是如何封裝axios的。axios的基本api不再贅述,提前安裝一下也不用我說了吧
    2021-06-06
  • vue@cli3項目模板怎么使用public目錄下的靜態(tài)文件

    vue@cli3項目模板怎么使用public目錄下的靜態(tài)文件

    這篇文章主要介紹了vue@cli3項目模板怎么使用public目錄下的靜態(tài)文件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Vue狀態(tài)管理庫Vuex的入門使用教程

    Vue狀態(tài)管理庫Vuex的入門使用教程

    Vuex是一個專門為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理庫。它采用了一個集中式的架構(gòu),將應(yīng)用程序的所有組件的狀態(tài)存儲在一個單獨的地方。這使得狀態(tài)的管理和維護變得更加容易
    2023-03-03
  • 在Vue中使用WebScoket?會怎么樣?

    在Vue中使用WebScoket?會怎么樣?

    這篇文章主要介紹了在Vue中使用WebScoket,網(wǎng)絡(luò)的不穩(wěn)定而斷開連接,webscoket不會出現(xiàn)異常,下面就一起進入文章看看吧
    2022-01-01
  • 詳解基于element的區(qū)間選擇組件校驗(交易金額)

    詳解基于element的區(qū)間選擇組件校驗(交易金額)

    這篇文章主要介紹了詳解基于element的區(qū)間選擇組件校驗(交易金額),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • vue中axios實現(xiàn)數(shù)據(jù)交互與跨域問題

    vue中axios實現(xiàn)數(shù)據(jù)交互與跨域問題

    這篇文章主要介紹了vue中axios實現(xiàn)數(shù)據(jù)交互與跨域問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • vue2.0/3.0中provide和inject的用法示例

    vue2.0/3.0中provide和inject的用法示例

    provide和inject是成對出現(xiàn)的,主要用于父組件向子孫組件傳遞數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于vue2.0/3.0中provide和inject用法的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • vue中使用vant的Toast輕提示報錯的解決

    vue中使用vant的Toast輕提示報錯的解決

    這篇文章主要介紹了vue中使用vant的Toast輕提示報錯的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 詳解基于iview-ui的導(dǎo)航欄路徑(面包屑)配置

    詳解基于iview-ui的導(dǎo)航欄路徑(面包屑)配置

    這篇文章主要介紹了詳解基于iview-ui的導(dǎo)航欄路徑(面包屑)配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Vuejs第九篇之組件作用域及props數(shù)據(jù)傳遞實例詳解

    Vuejs第九篇之組件作用域及props數(shù)據(jù)傳遞實例詳解

    這篇文章主要介紹了Vuejs第九篇之組件作用域及props數(shù)據(jù)傳遞實例詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09

最新評論