最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中組件間多種傳值方式案例詳解

 更新時(shí)間:2024年03月20日 09:25:02   作者:景天科技苑  
vue中每個(gè)組件都是隔離的,包括父組件和子組件,各組件之間需要數(shù)據(jù)通信,就涉及到了組件傳值,本文給大家介紹vue中組件間多種傳值方式案例,感興趣的朋友跟隨小編一起看看吧

組件傳值

vue中每個(gè)組件都是隔離的,包括父組件和子組件,各組件之間需要數(shù)據(jù)通信,就涉及到了組件傳值
通過prop屬性進(jìn)行傳值,值是數(shù)組

1.父組件往子組件傳值

兩步:  
?1.父組件在使用子組件時(shí)要定義自定義的屬性:

比如:動(dòng)態(tài)傳值 <Vheader :ff="num"></Vheader>
靜態(tài)傳值:<Vheader ff="123"></Vheader>   #靜態(tài)傳值,父標(biāo)簽數(shù)據(jù)發(fā)生變化,子標(biāo)簽數(shù)據(jù)不會變化,值不會變

?2.在子組件中使用props屬性聲明:比如:props:[‘ff’, ],然后子組件就可以將ff作為一個(gè)數(shù)據(jù)屬性來使用了

靜態(tài)傳值案例:

在度組件模板標(biāo)簽中定義屬性

// 父組件往子組件傳值,父組件定義數(shù)據(jù)
let App = {
    data(){
        return {
            name:'景浩'
        }
    },
    // 在模板中定義屬性實(shí)現(xiàn)靜態(tài)傳值 <Vheader ff="123"></Vheader> 靜態(tài)傳值
    template:
    `<div class="App">
        <Vheader ff="123"></Vheader>
        <Vcontent></Vcontent>
    </div>`,
    components: {
        Vheader,
        Vcontent
    }
}

在子組件中接收父組件傳來的值,使用props屬性接收

let Vheader = {
    //組件的屬性必須用函數(shù)方式來寫
    data(){
        return{
            nav_lst: ['個(gè)人中心','登錄','注冊']
        }
    },
    //在子組件中接收父組件傳來的值
    template: `<div>
                <h1>{{nav_lst}}</h1>
                <h2 style="color: mediumvioletred">{{ff}}</h2>
                </div>`,
    props: ['ff'],
};

瀏覽器查看,已接收到值,并予以展示

動(dòng)態(tài)傳值案例

接收方式不變,傳值方式使用v-bind方式

    // 父組件往子組件傳值,父組件定義數(shù)據(jù)
    let App = {
        data(){
            return {
                name:'景浩'
            }
        },
        // 在模板中定義屬性實(shí)現(xiàn)靜態(tài)傳值 <Vheader ff="123"></Vheader> 靜態(tài)傳值
        template:
        `<div class="App">
        <!-- //靜態(tài)傳值-->
<!--            <Vheader ff="123"></Vheader>-->
            <!--動(dòng)態(tài)傳值,通過v-bind的方式,變量名前面加冒號-->
            <Vheader :ff="name"></Vheader>
            <Vcontent></Vcontent>
        </div>`,
        components: {
            Vheader,
            Vcontent
        }
    }

瀏覽器查看傳值成功

使用父組件傳遞數(shù)據(jù)給子組件時(shí), 注意一下幾點(diǎn):

1.傳遞數(shù)據(jù)是變量,則需要在屬性左邊添加冒號.

傳遞數(shù)據(jù)是變量,這種數(shù)據(jù)稱之為"動(dòng)態(tài)數(shù)據(jù)傳遞"

傳遞數(shù)據(jù)不是變量,這種數(shù)據(jù)稱之為"靜態(tài)數(shù)據(jù)傳遞"

2.父組件中修改了數(shù)據(jù),在子組件中會被同步修改,但是,子組件中的數(shù)據(jù)修改了,是不是影響到父組件中的數(shù)據(jù). 不影響

這種情況,在開發(fā)時(shí),也被稱為"單向數(shù)據(jù)流",父組件數(shù)據(jù)修改后,子組件數(shù)據(jù)也會變,但改變子組件的值,父組件數(shù)據(jù)不會變

2.子組件往父組件傳值

兩步:
a.子組件中使用this.$emit(‘fatherHandler’,val); fatherHandler是父組件中使用子組件的地方添加的綁定自定義事件,
注意,如果fatherHandler報(bào)錯(cuò)了,那么可能是你的vue版本不支持自定義鍵名稱fatherHandler中有大寫字母,所以我們改成father-handler或者直接就全部小寫就可以了

<Vheader @fatherHandler="appFatherHandler"></Vheader> 

b.父組件中的methods中寫一個(gè)自定義的事件函數(shù):appFatherHandler(val){},在函數(shù)里面使用這個(gè)val,這個(gè)val就是上面子組件傳過來的數(shù)據(jù)

案例:比如要將Vheader里面的一個(gè)屬性head_num:80 傳給父組件App,并在里面展示

1、父組件中的操作,首先在父組件中的模板中,從哪個(gè)子組件傳值就在哪個(gè)子組件標(biāo)簽中自定義一個(gè)事件,事件綁定個(gè)方法,不要與系統(tǒng)事件重名

data(){
    return {
        name:'景浩和靈鴿',
        son_data:''
    }
},
template:
`<div class="App">
    //自定義事件
    <Vheader @ffunc="receive_data"></Vheader>  
    <Vcontent></Vcontent>
    <!--   父組件展示子組件傳來的值-->
    <h1>子組件傳來的值{{son_data}}</h1>
</div>`,
//父組件定義方法,帶一個(gè)參數(shù),用來接受子組件傳來的值
methods:{
    receive_data(val){
        //在這里將從子組件傳過來的值,賦值給父組件中的son_data屬性
        this.son_data = val
    }
}

2、子組件中的操作

    //在子組件中定義一個(gè)點(diǎn)擊事件,用來觸發(fā)傳值動(dòng)作
            //組件的屬性必須用函數(shù)方式來寫
    data(){
        return{
            nav_lst: ['個(gè)人中心','登錄','注冊'],
            //將子組件的這個(gè)header_num傳給父組件
            header_num: 80
        }
    },
  template: `<div>
                <h1>{{nav_lst}}</h1>
                <button @click="zouni">chuanzhi</button>
                </div>`,
    //用方法定義傳值邏輯,必須使用this.$emit()方法傳值
    methods:{
        //方法的第一個(gè)參數(shù)是父組件中定義的事件名稱,第二個(gè)是子組件的屬性
        zouni(){
            this.$emit('ffunc', this.header_num)
        }
    }

未點(diǎn)擊之前,son_data的值為空

點(diǎn)擊觸發(fā)傳值,子組件的值已經(jīng)傳給了父組件

3.平行組件傳值,兄弟組件傳值

什么是平行組件,看圖

平行組件傳值依賴vue對象,一般是新建一個(gè)不帶有任何參數(shù)的vue對象,平行組件都可以往該對象中存放值,平行組件都可以從該對象拿值

//平行組件傳值,比如我們從Vheader往Vcontent傳值,先聲明個(gè)vue對象

let bus = new Vue()

組件1

let Vheader = {
    //組件的屬性必須用函數(shù)方式來寫
    data(){
        return{
            nav_lst: ['個(gè)人中心','登錄','注冊'],
            //平行組件傳值
            header_num: 100
        }
    },
    //
    template: `<div>
                <h1>{{nav_lst}}</h1>
                <button @click="zouni">chuanzhi</button>   通過點(diǎn)擊觸發(fā)傳值
                </div>`,
    //在加載的時(shí)候,就把屬性值放到對象bus中,使用created不能傳值
    // created(){
    //     //往公交車上放值,用$emit()
    //     console.log(1111)
    //     bus.$emit('header_data',this.header_num);
    // },
    methods:{
        zouni(){
            bus.$emit('header_data',this.header_num);   在加載的時(shí)候,就把屬性值放到對象bus中,放值用$emit()
        }
    }
};

組件2:

//平行組件拿值,用$on()
let Vcontent = {
    //組件的屬性必須用函數(shù)方式來寫
    data(){
        return{
            content_lst: ['xx', 'oo'],
            content_num: 200,
            head_num:''   這里存放平行組件傳來的值,沒傳值時(shí)為空
        }
    },
    //組件要有自己的標(biāo)簽,用標(biāo)簽將組件自己的屬性包裹起來
    template: `<div>
                <h1 style="color: seagreen">{{content_lst}}</h1>
                <h1>平行組件傳來的值{{head_num}}</h1>
                </div>`,
    created() {
        //以鍵的形式取值,記得使用this的時(shí)候要用箭頭函數(shù)改變指引,指向vue對象
       bus.$on('header_data',val =>{
           console.log(val)
           this.head_num = val
       })
    }
};

瀏覽器展示,沒點(diǎn)擊之前,數(shù)據(jù)為空

點(diǎn)擊之后,就把Vheader組件的header_num 屬性值穿來過來

總結(jié),如上就是vue中常用的各種組件間傳值的方法與案例分享,vue框架使用以及案例剖析,持續(xù)更新中!!!

到此這篇關(guān)于vue中組件間多種傳值方式的文章就介紹到這了,更多相關(guān)vue組件間傳值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • element ui提交表單返回成功后自動(dòng)清空表單的值的實(shí)現(xiàn)代碼

    element ui提交表單返回成功后自動(dòng)清空表單的值的實(shí)現(xiàn)代碼

    這篇文章主要介紹了elementui提交表單返回成功后自動(dòng)清空表單的值,本文通過兩種方法結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • vue路由傳參 router-link和編程式傳參方式

    vue路由傳參 router-link和編程式傳參方式

    這篇文章主要介紹了vue路由傳參 router-link和編程式傳參方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue2之嵌套路由詳解

    Vue2之嵌套路由詳解

    本文介紹Vue嵌套路由的實(shí)現(xiàn)方式,通過動(dòng)態(tài)URL路徑嵌套組件展示,涉及修改路由配置及創(chuàng)建子組件Son1/Son2,結(jié)合ElementUI菜單組件應(yīng)用
    2025-08-08
  • 前端vuex中dispatch的使用方法總結(jié)

    前端vuex中dispatch的使用方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于前端vuex中dispatch使用方法的相關(guān)資料,vuex的dispatch方法用于觸發(fā)一個(gè)action,以便更新state,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • vue中使用iconfont圖標(biāo)的過程

    vue中使用iconfont圖標(biāo)的過程

    這篇文章主要介紹了vue中使用iconfont圖標(biāo)的過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue3全局組件注冊的實(shí)現(xiàn)代碼

    Vue3全局組件注冊的實(shí)現(xiàn)代碼

    在這篇文章中,我們將學(xué)習(xí)一下 Vue3 的全局組件注冊是如何實(shí)現(xiàn)的,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • 解決Vue Loading PostCSS Plugin failed:Cannot find module autoprefixer問題

    解決Vue Loading PostCSS Plugin failed:Cann

    這篇文章主要介紹了解決Vue Loading PostCSS Plugin failed:Cannot find module autoprefixer問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 解決Vue2.0自帶瀏覽器里無法打開的原因(兼容處理)

    解決Vue2.0自帶瀏覽器里無法打開的原因(兼容處理)

    本篇文章主要介紹了解決Vue2.0自帶瀏覽器里無法打開的原因(兼容處理),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-07-07
  • 使用vue-route 的 beforeEach 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗(yàn)證登錄)功能

    使用vue-route 的 beforeEach 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗(yàn)證登錄)功能

    在網(wǎng)站中普遍會遇到這樣的需求,路由跳轉(zhuǎn)前做一些驗(yàn)證,比如登錄驗(yàn)證(未登錄去登錄頁)。下面腳本之家小編給大家?guī)砹耸褂胿ue-route 的 beforeEach 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗(yàn)證登錄)功能,感興趣的朋友一起看看吧
    2018-03-03
  • 如何寫好一個(gè)vue組件,老夫的一年經(jīng)驗(yàn)全在這了(推薦)

    如何寫好一個(gè)vue組件,老夫的一年經(jīng)驗(yàn)全在這了(推薦)

    這篇文章主要介紹了如何寫好一個(gè)vue組件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論

农安县| 遂宁市| 雅安市| 阜南县| 恩平市| 正蓝旗| 玛纳斯县| 宽甸| 常熟市| 寿阳县| 凉城县| 阿克| 淮北市| 美姑县| 萨嘎县| 岱山县| 旬阳县| 桂阳县| 延吉市| 杭锦后旗| 中卫市| 宕昌县| 江口县| 宁乡县| 辽中县| 衢州市| 平潭县| 金堂县| 铜川市| 南和县| 沭阳县| 都兰县| 南通市| 年辖:市辖区| 登封市| 濮阳市| 通山县| 英吉沙县| 博客| 邹城市| 雷波县|