久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Vue中無渲染組件的示例

小編給大家分享一下Vue中無渲染組件的示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創新互聯公司長期為上千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為宿豫企業提供專業的做網站、成都做網站宿豫網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。

在 Vue.js 2.3.0 中引入的作用域插槽顯著提高了組件的可重用性。無渲染組件模式應運而生,解決了提供可重用行為和可插入表示的問題。

在這里,我們將會看到如何解決相反的問題:怎樣提供可重用的外觀和可插入的行為。

無渲染組件

這種模式適用于實現復雜行為且具有可自定義表示的組件。

它滿足以下功能:

  1. 該組件實現所有行為

  2. 作用域的插槽負責渲染

  3. 后備內容能夠確保組件可以直接使用。

舉個例子:一個執行 Ajax 請求并顯示結果的插槽的組件。組件處理 Ajax 請求并加載狀態,而默認插槽提供演示。

這是一個簡化版的實現:

<template>
  <div>
    <slot v-if="loading" name="loading">
        <div>Loading ...</div>
    </slot>
    <slot v-else v-bind={data}>
    </slot>
  </div>
</template>

<script>
export default {
  props: ["url"],
  data: () => ({
    loading: true,
    data: null
  }),
  async created() {
    this.data = await fetch(this.url);
    this.loading = false;
  }
};
</script>

用法:

<lazy-loading url="https://server/api/data">
  <template #default="{ data }">
    <div>{{ data }}</div>
  </template>
</lazy-loading>

有關這種模式的原始文章,請在這里查看。

一個相反的問題

如果問題反過來該怎么辦:想象一下,如果一個組件的主要特征就是它的表示形式,另外它的行為應是可自定義的。

假設你想要基于 SVG 創建一個樹組件,如下所示:

Vue中無渲染組件的示例

你想要提供 SVG 的顯示和行為,例如在單擊時收回節點和突出顯示文本。

當你打算不對這些行為進行硬編碼,并且讓組件的用戶自由覆蓋它們時,就會出現問題。

暴露這些行為的簡單解決方案是向組件添加方法和事件。

你可能會這樣去實現:

<script>
export default {
  mounted() {
    // pseudo code
    nodes.on('click',(node) => this.$emit('click', node));
  },
  methods: {
    expandNode(node) {
      //...
    },
    retractNode(node) {
      //...
    },
    highlightText(node) {
      //...
    },
  }
};
</script>

如果組件的使用者要向組件添加行為,需要在父組件中使用 ref,例如:

<template>
  <tree ref="tree" @click="onClick"></tree>
</template>

<script>
export default {
  methods: {
    onClick(node) {
      this.$refs.tree.retractNode(node);
    }
  }
};
</script>

這種方法有幾個缺點:

  1. 無法再提供默認行為

  2. 行為代碼最終會被頻繁的復制粘貼

  3. 行為不可重用

讓我們看看無渲染插槽如何解決這些問題。

無渲染插槽

行為基本上包括證明對事件的反應。所以讓我們創建一個插槽,用來接收對事件和組件方法的訪問:

<template>
  <div>
    <slot name="behavior" :on="on" :actions="actions">
    </slot>
  </div>
</template>

<script>
export default {
  methods: {
    expandNode(node) { },
    retractNode(node) { },
   //...
  },
  computed:{
    actions() {
      const {expandNode, retractNode} = this;
      return {expandNode, retractNode};
    },
    on() {
      return this.$on.bind(this);
    }
  }
};
</script>

on 屬性是父組件的 $on 方法,因此可以監聽所有事件。

可以將行為實現為無渲染組件。接下來編寫點擊擴展組件:

export default {
  props: ['on','action']

  render: () => null,

  created() {
    this.on("click", (node) => {
      this.actions.expandNode(node);
    });
  }
};

用法:

<tree>
  <template #behavior="{ on, actions }">
    <expand-on-click v-bind="{ on, actions }"/>
  </template>
</tree>

該解決方案的主要優點是:

  • 通過備用內容來提供默認行為的可能性:

例如,通過將圖形組件聲明為:

<template>
  <div>
    <slot name="behavior" :on="on" :actions="actions">
      <expand-on-click v-bind="{ on, actions }"/>
    </slot>
  </div>
</template>
  • 能夠創建可重用的組件,并可以實現使用這個組件的用戶能夠選擇的標準行為

考慮一個懸停突出顯示組件:

export default {
  props: ['on','action']

  render: () => null,

  created() {
    this.on("hover", (node) => {
      this.actions.highlight(node);
    });
  }
};

覆蓋標準行為:

<tree>
  <template #behavior="{ on, actions }">
    <highlight-on-hover v-bind="{ on, actions }"/>
  </template>
</tree>
  • 行為插槽是可組合的

添加兩個預定義的行為:

<tree>
  <template #behavior="{ on, actions }">
    <expand-on-click v-bind="{ on, actions }"/>
    <highlight-on-hover v-bind="{ on, actions }"/>
  </template>
</tree>
  • 解決方案的可讀性

作為行為的組件是能夠自描述的。

  • 可擴展性

on 屬性可以訪問所有組件事件。默認情況下,該插槽可使用新事件。

以上是“Vue中無渲染組件的示例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!

網頁題目:Vue中無渲染組件的示例
當前路徑:http://www.js-pz168.com/article38/gojepp.html

成都網站建設公司_創新互聯,為您提供標簽優化做網站用戶體驗企業網站制作外貿網站建設定制網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

營銷型網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
911国产精品| 亚洲午夜免费视频| 肉色丝袜一区二区| 成人国产亚洲欧美成人综合网| 国产日韩精品一区观看| 色嗨嗨av一区二区三区| 精品成人免费观看| 亚洲一区二区三区在线看| 国产成人综合网| 久久影院理伦片| 3d动漫精品啪啪一区二区竹菊| 中文字幕中文字幕在线一区 | 亚洲r级在线视频| 国产91对白在线观看九色| 欧美精品一区二区三区在线看午夜 | 日本午夜一本久久久综合| 91影院在线免费观看| 一区二区三区四区国产| 久久新电视剧免费观看| 日韩综合一区二区| 成人xxxxx色| 欧美三级日本三级少妇99| 国产精品乱码人人做人人爱| 看电影不卡的网站| 久久99精品久久久久久久青青日本 | 一区二区三区在线视频播放| 国产成a人无v码亚洲福利| 日本电影一区二区三区| 日韩精品一区二区三区中文不卡 | 亚洲欧美二区三区| 国产jizzjizz一区二区| 日韩一区二区三区资源| 337p日本欧洲亚洲大胆精品| 日韩不卡一二三区| 国产福利一区二区三区在线观看| 欧美日韩视频在线观看一区二区三区| 中文字幕一区二区三| 国产精品99久久久久久久女警| 欧美人与物videos另类| 久久综合丝袜日本网| 美女视频一区在线观看| 麻豆av福利av久久av| 欧美成人激情免费网| 日韩国产欧美三级| 久久精品二区| 26uuu精品一区二区三区四区在线| 日本免费在线视频不卡一不卡二 | 国产精品毛片a∨一区二区三区| 久久99热国产| 日韩久久久久久久| 欧美国产日本韩| 国产成人av影院| 在线亚洲欧美专区二区| 亚洲精品成人悠悠色影视| 99re在线观看| 日韩一级黄色大片| 老司机精品视频导航| 欧美自拍资源在线| 国产精品网曝门| av欧美精品.com| 欧美精品第一页| 免费亚洲电影在线| 日韩国产伦理| 中文字幕一区二区三区在线播放 | 欧美体内she精高潮| 亚洲一区在线观看视频| 国产一区精品视频| 久久久久久久电影| 成人小视频在线| 欧美男人的天堂一二区| 日韩av不卡一区二区| 日韩高清国产一区在线观看| 中文字幕在线不卡国产视频| 91免费在线看| 久久综合色鬼综合色| 粉嫩aⅴ一区二区三区四区| 欧美日韩一区视频| 蜜臀av亚洲一区中文字幕| 亚洲 日韩 国产第一区| 亚洲精品国产一区二区精华液 | 色综合色狠狠综合色| 夜夜精品视频一区二区| 久久国产精品 国产精品| 欧美激情中文字幕| 91麻豆蜜桃一区二区三区| 日韩天堂在线观看| 国产成人精品影院| 欧美精品国产精品| 国产一区二区在线免费观看| 欧美视频一区二区三区四区| 免费高清成人在线| 中文字幕日韩一区二区三区不卡| 亚洲一级在线观看| 日韩欧美精品一区二区| 亚洲午夜久久久| 日韩精品资源| 亚洲成人先锋电影| 亚洲春色在线| 午夜精品国产更新| 在线看视频不卡| 日本成人在线看| 91国内精品野花午夜精品| 日韩精品高清不卡| 色94色欧美sute亚洲13| 蜜臀av性久久久久蜜臀aⅴ | 青青草伊人久久| 在线亚洲人成电影网站色www| 日本不卡一二三| 欧美探花视频资源| 国产伦精一区二区三区| 91精品国产综合久久国产大片| 国产高清久久久| 欧美成人一区二区三区片免费| 成人激情免费网站| 国产性色一区二区| 国产精品三区在线| 亚洲男同性恋视频| 丝袜美腿玉足3d专区一区| 天天色图综合网| 欧美日韩中文国产| 国产成人av电影在线播放| 欧美精品一区二区不卡| 成人片在线免费看| 亚洲欧美激情在线| 杨幂一区欧美专区| 另类欧美日韩国产在线| 欧美一级精品大片| 91久久大香伊蕉在人线| 国产精品美女久久久久久久久久久 | www国产亚洲精品久久麻豆| 99久久精品无码一区二区毛片| 国产精品乱人伦中文| 日本公妇乱淫免费视频一区三区| 偷拍亚洲欧洲综合| 欧美乱妇23p| 97精品国产97久久久久久久久久久久 | 久久精品一区四区| 九九九九九精品| 午夜电影网一区| 欧美精品视频www在线观看| www.在线成人| 亚洲视频在线一区| 宅男av一区二区三区| 国内一区二区视频| 久久蜜桃av一区二区天堂| 精品一区二区三区视频日产| 亚洲一二三四久久| 欧美日韩精品系列| 成人深夜在线观看| 最新欧美精品一区二区三区| 一级特黄录像免费播放全99| 国产自产视频一区二区三区| 久久精品一级爱片| 日本一区二区三区www| 麻豆成人av在线| 久久一区二区三区国产精品| 欧美成人在线免费观看| 免费人成在线不卡| www国产成人| 日韩精品无码一区二区三区| 狠狠色丁香婷婷综合| 国产色爱av资源综合区| 亚洲精品高清视频| 国产成人一区在线| 综合久久久久久| 欧洲精品中文字幕| 99精品欧美一区二区三区| 亚洲一区二区在线视频| 制服丝袜亚洲播放| 国产手机精品在线| 美女高潮久久久| 久久九九久久九九| 一区在线电影| 99re热视频这里只精品| 亚洲va欧美va国产va天堂影院| 91精品一区二区三区久久久久久 | 91在线播放网址| 香蕉av福利精品导航| 日韩精品一区二区三区四区| 欧美不卡三区| 国产麻豆一精品一av一免费 | 久久久噜噜噜久噜久久综合| 色噜噜狠狠色综合网| 成人性生交大片免费看中文 | 欧美一区二区福利| 国产精品亚洲专一区二区三区| 中文字幕一区二区三中文字幕| 欧美伊人精品成人久久综合97| av一区观看| 麻豆精品在线播放| 国产精品嫩草影院com| 欧美色男人天堂| 久久久久综合一区二区三区| 国产一区二区三区最好精华液| 亚洲人一二三区| 日韩美女视频在线| 亚洲一区二区三区色| 91免费观看在线| 美国三级日本三级久久99| 国产精品网站导航|