中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue中Props的作用有哪些

發布時間:2021-01-21 16:30:24 來源:億速云 閱讀:816 作者:Leah 欄目:web開發

本篇文章給大家分享的是有關Vue中Props的作用有哪些,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

單向數據流

所有的 prop 都使得其父子 prop 之間形成了一個單向下行綁定:父級 prop 的更新會向下流動到子組件中,但是反過來則不行。這樣會防止從子組件意外改變父級組件的狀態,從而導致你的應用的數據流向難以理解。

額外的,每次父級組件發生更新時,子組件中所有的 prop 都將會刷新為最新的值。這意味著你不應該在一個子組件內部改變 prop。如果你這樣做了,Vue 會在瀏覽器的控制臺中發出警告。

問題

下面簡要說一下上面發生的警告現象,或許大多數人都遇到過.

使用場景

父組件

<BackLogModal :isModalOpen="isModalOpen" @closeModal="handleCloseModal">
</BackLogModal>
  • BackLogModal為一個彈窗組件,通過isModalOpen決定彈窗的開閉狀態

  • 傳入的isModalOpen是父組件的一個變量,類型為boolean

  • closeModal監聽子組件派發的自定義事件closeModal

子組件

// 使用了typescript
export default class BackLogModal extends Vue {
  @Prop()
  private isModalOpen: boolean;

  private handleConfirm(): void {
    this.$Message.info('Clicked ok');
    this.$emit('closeModal');
  }

  private handleClose(): void {
    this.$Message.info('Clicked cancal');
    this.$emit('closeModal');
  }
}
  • 通過@Prop()注解獲取父組件傳遞過來的isModalOpen屬性

  • 頁面 通過v-model與屬性isModalOpen進行綁定

  • 由于彈窗組件在關閉時會自動設置isModalOpen的值為false,這里直接修改的就是父組件傳入的isModalOpen屬性,由于props屬性是單向數據流,具有不可變狀態,這是頁面就會拋出警告

解決問題

export default class BackLogModal extends Vue {
  private isOpen: boolean = false;

  @Prop()
  private isModalOpen: boolean;

  @Watch('isModalOpen')
  private watchModalOpen(newVal: boolean, oldVal: boolean) {
    console.log(newVal, oldVal);
    if (newVal !== oldVal) {
      this.isOpen = newVal;
    }
  }

  private handleConfirm(): void {
    this.$Message.info('Clicked ok');
    this.$emit('closeModal');
  }

  private handleClose(): void {
    this.$Message.info('Clicked cancal');
    this.$emit('closeModal');
  }
}
  • 定義一個子組件私有變量isOpen與頁面彈窗就行綁定

  • 使用@Watch('isModalOpen')監聽父組件傳入的isModalOpen屬性,一旦值發生改變,便更新本地變量isOpen,確保彈窗的正常的打開與關閉

以上就是Vue中Props的作用有哪些,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铁岭市| 墨脱县| 福建省| 蒙山县| 疏勒县| 利津县| 镶黄旗| 玉门市| 鄢陵县| 雷山县| 宁波市| 清镇市| 克山县| 柘城县| 广南县| 栾城县| 望江县| 雷波县| 永福县| 石棉县| 余庆县| 桂林市| 溆浦县| 沾化县| 鱼台县| 甘洛县| 揭西县| 五河县| 梨树县| 云林县| 江津市| 濮阳市| 阿尔山市| 安西县| 九寨沟县| 兴仁县| 广宗县| 甘泉县| 静安区| 长顺县| 西青区|