<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Vue 兄弟組件通信的方法(不使用Vuex)

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:26:40
        文檔

        Vue 兄弟組件通信的方法(不使用Vuex)

        Vue 兄弟組件通信的方法(不使用Vuex):項目中,我們經(jīng)常會遇到兄弟組件通信的情況。在大型項目中我們可以通過引入vuex輕松管理各組件之間通信問題,但在一些小型的項目中,我們就沒有必要去引入vuex。下面簡單介紹一下使用傳統(tǒng)方法,實現(xiàn)父子組件通信的方法。 簡單實例:我們在a組件中點擊按鈕,將
        推薦度:
        導讀Vue 兄弟組件通信的方法(不使用Vuex):項目中,我們經(jīng)常會遇到兄弟組件通信的情況。在大型項目中我們可以通過引入vuex輕松管理各組件之間通信問題,但在一些小型的項目中,我們就沒有必要去引入vuex。下面簡單介紹一下使用傳統(tǒng)方法,實現(xiàn)父子組件通信的方法。 簡單實例:我們在a組件中點擊按鈕,將

        項目中,我們經(jīng)常會遇到兄弟組件通信的情況。在大型項目中我們可以通過引入vuex輕松管理各組件之間通信問題,但在一些小型的項目中,我們就沒有必要去引入vuex。下面簡單介紹一下使用傳統(tǒng)方法,實現(xiàn)父子組件通信的方法。

        簡單實例:我們在a組件中點擊按鈕,將信息傳給b組件,從而使b組件彈出。

        主要的思路就是:先子傳父,在父傳子

        首先我們在 a.vue 組件中 ,給按鈕botton綁定一個handleClick事件,事件中我們通過 this.$emit() 方法去觸發(fā)一個自定義事件,并傳遞我們的參數(shù)。

        示例中我們通過this.$emit() 去觸發(fā)isLogFn 這個方法自定義事件,并將log 參數(shù)傳遞出去

        a.vue

        <template>
         <div class="adiv">
         <p>a組件</p>
         <button type="button" v-on:click="handleClick">點擊打開組件b彈窗</button>
         </div>
        </template>
        
        <script>
        
        export default {
         methods: {
         handleClick () {
         this.$emit('isLogFn','log')
         }
         }
        }
        </script>
        
        <style>
        .adiv{
         width: 400px;
         height: 200px;
         border: 1px solid #000;
         margin: 0 auto;
        }
        </style>
        
        

        第二步,我們要在父組件中去監(jiān)聽這個自定義事件,去觸發(fā)對應(yīng)的方法,并接受a組件傳過來的參數(shù)。此時我們就完成了子組件向父組件傳值的過程。

        示例中,<aPage @isLogFn = "lisLogFn"></aPage> 監(jiān)聽isLogFn 去觸發(fā)我們在父組件中定義的方法lisLogFn,并拿到傳過來的 ‘log' 數(shù)據(jù)。完成子父傳值。

        到此,整個過程還沒有結(jié)束,只是完成了一半。接下來我們要完成父子組件傳值,將a組件的信息在傳給b組件。

        在< bPage > 標簽中綁定islog 屬性,動態(tài)綁定data中的login 字段,在我們通過lisLogFn 方法拿到 ‘data'之后,我們要判斷 data 傳過來的數(shù)據(jù),根據(jù)判斷結(jié)果去改變data()中的數(shù)據(jù),從而將數(shù)據(jù)傳遞給b組件

        App.vue

        <template>
         <div id="app">
         <aPage @isLogFn = "lisLogFn"></aPage>
         <bPage :isLog = "login"></bPage>
         </div>
        </template>
        
        <script>
        
        import aPage from './components/a.vue'
        import bPage from './components/b.vue'
        
        export default {
         data () {
         return {
         login: 'false'
         }
         },
         name: 'app',
         components: {
         aPage,
         bPage
         },
         methods: {
         lisLogFn (data) {
         if (data == 'log') {
         this.login = 'true'
         }
         }
         }
        }
        </script>
        
        <style>
        </style>
        
        

        最后,b組件中需要創(chuàng)建props,定義一個isLog 屬性,這個屬性就是我們傳過來的數(shù)值。然后我們在計算屬性中處理這個數(shù)據(jù),最終供b組件使用。示例中,我們在v-show="isLogin" 中用來控制彈窗是否打開。

        切記!不能直接使用這個props,一定要經(jīng)過computed處理,原因我引用vue官方說明

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

        b.vue

        <template>
         <div class="bdiv" v-show="isLogin">我是組件B彈窗</div>
        </template>
        
        <script>
        export default {
         props: ['isLog'],
         data () {
         return {
        
         }
         },
         computed: {
         isLogin () {
         if(this.isLog == 'true'){
         return true
         } else {
         return false
         }
         }
         }
        }
        </script>
        
        <style>
         .bdiv{
         width: 200px;
         height: 200px;
         border: 1px #000 solid;
         margin: 0 auto;
         }
        
        </style>
        
        

        總結(jié): 想要實現(xiàn)兄弟組件傳值,一定要首先熟悉子父,父子之間的傳值。

        子父:

        1. 子組件中需要以某種方式例如點擊事件的方法來觸發(fā)一個自定義事件
        2. 將需要傳的值作為$emit的第二個參數(shù),該值將作為實參傳給響應(yīng)自定義事件的方法
        3. 在父組件中注冊子組件并在子組件標簽上綁定對自定義事件的監(jiān)聽

        父子:

        1. 子組件在props中創(chuàng)建一個屬性,用以接收父組件傳過來的值
        2. 在子組件標簽中添加子組件props中創(chuàng)建的屬性,把需要傳給子組件的值賦給該屬性

        文中示例 github 地址:https://github.com/enjoy-pany/vue-emit

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Vue 兄弟組件通信的方法(不使用Vuex)

        Vue 兄弟組件通信的方法(不使用Vuex):項目中,我們經(jīng)常會遇到兄弟組件通信的情況。在大型項目中我們可以通過引入vuex輕松管理各組件之間通信問題,但在一些小型的項目中,我們就沒有必要去引入vuex。下面簡單介紹一下使用傳統(tǒng)方法,實現(xiàn)父子組件通信的方法。 簡單實例:我們在a組件中點擊按鈕,將
        推薦度:
        標簽: 方法 VUE 通信
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: ssswww日本免费网站片| 亚洲第一街区偷拍街拍| 99精品免费视品| 亚洲三区在线观看无套内射| eeuss影院免费直达入口| 亚洲乱码精品久久久久..| 野花香在线视频免费观看大全| 亚洲人成网7777777国产| 四虎国产精品免费永久在线| 亚洲乱码中文字幕综合| AAA日本高清在线播放免费观看| 亚洲精品无码永久在线观看你懂的| h在线看免费视频网站男男| 夜夜春亚洲嫩草影院| 久久免费高清视频| 亚洲美女视频网址| 毛片免费观看的视频| 亚洲AV无码一区二区三区牲色| 亚洲?v无码国产在丝袜线观看| 日韩在线观看视频免费| 国产亚洲精aa成人网站| 51精品视频免费国产专区| 亚洲a∨无码男人的天堂| 国产精品免费视频网站| 久久国产美女免费观看精品| 91亚洲自偷手机在线观看| 国产精品视频永久免费播放| 美女免费视频一区二区| 亚洲国产综合精品中文第一区| 日韩一区二区a片免费观看| 野花视频在线官网免费1| 国产成人精品日本亚洲| 中国在线观看免费国语版| 边摸边吃奶边做爽免费视频99| 国产A在亚洲线播放| 一个人在线观看视频免费| 伊人久久国产免费观看视频| 亚洲精品永久www忘忧草| 免费国产高清视频| 7x7x7x免费在线观看| 黄色一级免费网站|