91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

东乡| 桐梓县| 高陵县| 新闻| 抚顺市| 乡宁县| 襄汾县| 都匀市| 宜春市| 化隆| 岑溪市| 玉龙| 龙泉市| 海丰县| 栾城县| 锡林浩特市| 阿荣旗| 余江县| 进贤县| 武隆县| 潮安县| 许昌县| 兴宁市| 项城市| 衢州市| 广平县| 齐齐哈尔市| 金秀| 井陉县| 司法| 澄江县| 云龙县| 西平县| 宁城县| 东莞市| 邯郸市| 织金县| 乌审旗| 宜宾县| 溧水县| 饶平县|