国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue組件通信方式匯總

這篇具有很好參考價值的文章主要介紹了vue組件通信方式匯總。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

之前學習了組件通信的6中方式
1-props:使用場景:【父組件給子組件傳遞數據
傳遞數據類型:
可能是函數:實質是子組件想給父組件傳遞數據;
可能不是函數:實質就是父組件給子組件傳遞數據

特殊情況:路由傳遞props
1:布爾值類型,把路由中params參數映射為組件props數據
2:對象,靜態(tài)數據,很少用
3:函數,可以把路由中params|query參數映射為組件props數據

2-自定義事件??$emit $on
事件:原生DOM事件----【click|mouseenter........】
事件:自定義事件-----【子組件給父組件傳遞數據

3-$bus 全局事件總線
組件實例的原型的原型指向的Vue.prototype

4-pubsub-js【發(fā)布訂閱消息】
*在vue中根本不用【React】 ----萬能

5-Vuex[倉庫] -----數據非持久化
state mutations actions getters modules

6-插槽-----父子通信【結構】
默認插槽
具名插槽
作用域插槽:子組件的數據來源于父組件,但是子組件的自己的結構有父親決定。

1-event事件深入探討

組件綁定原生DOM事件,并非原生DOM事件,而是所謂的自定義事件。如果你想把自定義事件變?yōu)樵鶧OM事件,需要加上修飾符.native修飾這個修飾符,可以把自定義事件【名字:原生DOM類型的】變?yōu)樵鶧OM事件。

比如組件Event1綁定了click事件,
<Event1 @click="handler1"></Event1>,
但是這個click事件不是我們理解的原生click事件,而是一個自定義事件。如果需要編程原生的click事件,需要加上修飾符.native。
<Event1 @click.native="handler1"></Event1>

vue組件通信方式匯總

?vue組件通信方式匯總
vue組件通信方式匯總

?vue組件通信方式匯總

2-v-model實現組件通信

v-model:指令,可以收集表單數據【text、radio、checkbox、range】等等
切記:v-model收集checkbox需要用數組收集

v-model:實現原理 :value @input

vue組件通信方式匯總

vue組件通信方式匯總

?上面兩種寫法效果是一樣的。當然:value @input也可以實現父子數據同步。?

vue組件通信方式匯總

?vue組件通信方式匯總

?3-屬性修飾符.sync

屬性修飾符.sync,可以實現父子數據同步。在elementUI組件中出現,實現父子數據同步。?給子組件綁定一個自定義事件,事件的名字為update:money(必須取是這個名字)

vue組件通信方式匯總

?vue組件通信方式匯總

?以上寫了一堆邏輯,其實可以使用sync來實現
vue組件通信方式匯總

? 4-$attrs和$?listeners


$attrs:組件實例的屬性,可以獲取到父親傳遞的props數據(前提子組件沒有通過props接受)$listeners:組件實例的屬性,可以獲取到父親傳遞自定義事件(對象形式呈現)。

vue組件通信方式匯總

?vue組件通信方式匯總

需要注意一點,由于title我們已經使用了props接受,所以在控制臺this.$attrs中不會再出現title屬性。

5-$children和$parent


ref:可以在父組件內部獲取子組件---實現父子通信
$children:可以在父組件內部獲取全部的子組件【返回數組】
$parent:可以在子組件內部獲取唯一的父組件【返回組件實例】

vue組件通信方式匯總

?ref使用場景
當點擊 "找小明借錢100"按鈕的時候,baba的存款+100,小明的存款減去100;同樣找小紅借150元,baba的存款+150,小紅的存款減去150;同樣的套路可以寫一份。

vue組件通信方式匯總

?vue組件通信方式匯總

?vue組件通信方式匯總

$children:使用場景:找 點擊 "找所有的孩子借錢200"。

vue組件通信方式匯總

?$parent:可以在點擊"給baba錢50"按鈕中使用

vue組件通信方式匯總

?
如果項目中很多JS的邏輯相似,可以使用mixin。比如本實例當中,兒子組件和女兒組件中都有給baba多少錢,邏輯一樣,所以我們可以抽取mixin來處理。同樣在兒子組件和女兒組件使用mixin來引入使用就行。
vue組件通信方式匯總

?vue組件通信方式匯總

?vue組件通信方式匯總

6-插槽

作用域插槽:子組件的數據來源于父組件,但是子組件的自己的結構有父親決定。
?

?vue組件通信方式匯總vue組件通信方式匯總

?src\pages\Communication\ScopeSlotTest\defSlot.vue

<template>
  <div>
      <h1>作用域插槽</h1>
      <List :todos="todos">
        <template v-slot="{todo,$index}">
            <h1 :style="{color:todo.isComplete?'red':'cyan'}">{{todo.text}}----{{$index}}</h1>
        </template>
      </List>
      <h1>默認插槽</h1>
      <Test><template><a >百度</a></template></Test>
      <Test><template><div>輪播圖的結構</div></template></Test>
      <div>*************************************</div>
      <Test1>        
         <template><p style="color:red;">我是填坑的爸爸---默認插槽</p></template><!-- 默認插槽 -->  
         <!-- #fbb其實就是slot='fbb' 簡寫方式,具名插槽的簡寫方式 -->       
         <template #fbb><p style="color:cyan;">我是填坑的爸爸---將來具名插槽---fbb</p></template><!-- 具名插槽 -->
         <!-- #fcc其實就是slot='fcc' 簡寫方式,具名插槽的簡寫方式 -->
         <template #fcc><p style="color:blue;">我是填坑的爸爸---將來具名插槽---fcc</p></template>
      </Test1>
  </div>
</template>

<script type="text/ecmascript-6">
  import List from './List'
  import Test from './Test'
  import Test1 from './Test1'
  export default {
    name: 'ScopeSlotTest',
    data () {
      return {
        todos: [
          {id: 1, text: 'AAA', isComplete: false},{id: 2, text: 'BBB', isComplete: true},
          {id: 3, text: 'CCC', isComplete: false},{id: 4, text: 'DDD', isComplete: false},
        ]
      }
    },
    components: {
      List,Test,Test1 
    }
  }
</script>

src\pages\Communication\ScopeSlotTest\List.vue

<template>
  <ul>
    <li v-for="(todo,index) in todos" :key="todo.id">
           <!-- 作用于插槽的使用 -->
           <!-- 下面寫法起始不是props,就是作用域插槽的語法,將數據回傳給父組件 -->
          <slot :todo="todo" :$index="index"></slot>
    </li>
  </ul>
</template>

<script>
export default {
  name:?'List',
  props: {
    todos: Array
  }
}
</script>

src\pages\Communication\ScopeSlotTest\Test\index.vue

<template>
  <div>
       <pre>學習-默認插槽</pre>
       <h1>我喜歡張杰的歌曲</h1>
       <!--
            slot,本身即為插槽,slot是一個全局組件、默認插槽
            底下相當于子組件留了一個'大坑'
        -->
       <slot></slot>
  </div>
</template>

<script>
export default {
  name: '',
}
</script>

<style scoped>

</style>

src\pages\Communication\ScopeSlotTest\Test1\index.vue文章來源地址http://www.zghlxwxcb.cn/news/detail-433842.html

<template>
  <div>
      <pre>具名插槽</pre>
      <!-- 默認插槽:只能有一個-->
      <slot></slot>
      <!--具名插槽:可以有N個 -->
      <slot name="fbb"></slot>
      <slot name="fcc"></slot>
  </div>
</template>

<script>
export default {
  name: '',
}
</script>

<style scoped>

</style>

到了這里,關于vue組件通信方式匯總的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • vue 組件之間通信的方式

    1.父向子版? 父組件設置自定義屬性 子組件props接收 2.子向父版 父組件設置自定義方法并綁定接收的方法 子組件觸發(fā)方法 ?3.全局事件總線?? 4.Vuex 用這個的話首先要裝包或者創(chuàng)建工程的時候選擇這個選項手腳架會給你裝好 5.路由 抽象一點說路由也算通信方式的一種吧 這種

    2024年01月18日
    瀏覽(22)
  • Vue組件的通信方式有哪些?

    Vue組件的通信方式有哪些?

    開始之前,我們把組件間通信這個詞進行拆分 組件 通信 都知道組件是vue最強大的功能之一,vue中每一個 .vue 文件我們都可以視之為一個組件。通信指的是發(fā)送者通過某種媒體以某種格式來傳遞信息到收信者以達到某個目的。廣義上,任何信息的交通都是通信組件間通信,即

    2023年04月10日
    瀏覽(23)
  • 在vue中不同組件通信方式

    1.父子組件,通過prop 2.非父子組件,通過vuex或根vue轉載器 一般是以上兩種情況,但是還有一種比較特殊的情況,即孫子組件或更深層次的組件通信 上述如果父組件需要與grandson通信,除了vuex,必須先與son組件通信,再由son與grandson通信,在層級少的情況下沒有問題,但是層

    2024年01月24日
    瀏覽(20)
  • Vue3組件間的通信方式

    Vue3組件間的通信方式

    目錄 ?1.props父向子組件通信 2.自定義事件 子向父組件通信 3.全局事件總線 4.v-model組件通信(父子組件數據同步) 綁定單個數據同步? 綁定多個數據同步? 5.useAttrs組件通信 ?6.ref與$parent ref獲取子組件實例對象 ?$parent獲取父組件實例對象 ?7.provide-inject 可以實現隔輩傳輸 8.

    2024年02月17日
    瀏覽(19)
  • VUE組件間通信的七種方式

    目錄 1、 props / $emit (1)父組件向子組件傳值(props的用法) (2)子組件向父組件傳遞數據($emit的用法) 2、ref / $refs 用法: 3、eventBus事件總線($emit / $on) (1)創(chuàng)建事件中心管理組件之間的通信 (2)發(fā)送事件假設有兩個兄弟組件 firstCom和secondCom的父組件: 在firstCom組件

    2024年02月05日
    瀏覽(18)
  • 07-Vue技術棧之(組件之間的通信方式)

    07-Vue技術棧之(組件之間的通信方式)

    前言: 組件之間通信的方式有很多種,比如 props 、 自定義事件 、 全局事件總線 、 消息訂閱與發(fā)布 、 父鏈與子組件索引 、 插槽 、 Vuex 等都可以實現組件之間的通信。在這里我將介紹以下三種通信方式。 它是一種組件間通信的方式,適用于: 子組件 === 父組件 使用場景

    2024年02月07日
    瀏覽(15)
  • AI生成--Vue組件之間通信方式有哪些

    Vue組件之間通信方式有以下幾種: 父子組件通信:父組件可以通過props傳遞數據給子組件,子組件通過$emit觸發(fā)事件通知父組件。 兄弟組件通信:可以通過共同的父組件作為中介,兄弟組件通過 e m i t 和 emit和 e mi t 和 on觸發(fā)和監(jiān)聽事件實現通信。 跨級組件通信:可以使用p

    2024年02月08日
    瀏覽(17)
  • Vue中的的通信方式有幾種?隔代組件的通信你用那種方式解決?

    props/$emit 適用父子組件通信 ref與parent/children 適用父子組件通信 attrs/listeners,provide/inject 適用于隔代組件通信 vuex,EventBus (事件總線) 適用于父子、隔代、兄弟組件通信 slot 插槽方式 attrs實例 父組件(這時候我們傳了兩個參數title和type) 子組件(注意:子組件使用了title,那么

    2024年02月14日
    瀏覽(27)
  • vue3 組件間通信的方式(setup語法糖寫法)

    該方式用于父傳子,父組件以數據綁定的形式聲明要傳遞的數據,子組件通過defineProps()方法創(chuàng)建props對象,即可拿到父組件傳來的數據。 2. emit方式 emit 方式也是Vue中最常見的組件通信方式,該方式用于 子傳父。 3、defineExpose 利用defineExpose+ref 可以得到組件里的方法和變量

    2024年02月12日
    瀏覽(21)
  • 【干貨】Vue2.x 組件通信方式詳解,這篇講全了

    【干貨】Vue2.x 組件通信方式詳解,這篇講全了

    vue是數據驅動視圖更新的框架, 我們平時開發(fā),都會把頁面不同模塊拆分成一個一個vue組件, 所以對于vue來說組件間的數據通信非常重要,那么組件之間如何進行數據通信的呢? 首先我們需要知道在vue中組件之間存在什么樣的關系, 才更容易理解他們的通信方式。 一般我們分

    2023年04月27日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包