Maison > interface Web > Voir.js > Comment communiquer entre les composants parent et enfant dans Vue ? Parlons des modalités de transmission de père en fils et de fils en père.

Comment communiquer entre les composants parent et enfant dans Vue ? Parlons des modalités de transmission de père en fils et de fils en père.

青灯夜游
Libérer: 2021-11-30 19:41:40
avant
2884 Les gens l'ont consulté

Comment communiquer entre les composants parent et enfant dans Vue ? L'article suivant vous amènera à comprendre la communication entre les composants parent et enfant de Vue et à présenter les méthodes permettant au parent de transmettre une valeur à l'enfant et à l'enfant de transmettre une valeur au parent. J'espère que cela sera utile à tout le monde.

Comment communiquer entre les composants parent et enfant dans Vue ? Parlons des modalités de transmission de père en fils et de fils en père.

Composant parent-enfant Vue

Qu'est-ce qu'un composant parent-enfant ?

Introduisez un autre composant dans un composant, et le composant introduit est appelé un sous-composant. En raison de la modularisation de Vue, les parties communes seront extraites dans un module séparé et tout le contenu de la page ne sera pas écrit sous une seule Vue. fichier. , en raison de la modularité, les problèmes de communication entre deux modules ne peuvent être évités. À l'heure actuelle, il y a le problème du transfert de données entre les modules (composants). [Recommandation associée : "Tutoriel vue.js"]

Communication entre les composants parent-enfant Vue

En vue, un composant utilise souvent les données ou les méthodes d'un autre composant. À ce stade, il existe une communication entre parent-enfant. Composants Problème de communication

Vue transmise de père en fils

1. Regardez d'abord le code, l'explication est ci-dessous

<body>
//父组件
<div id="app">
    <cpn3 :ctitle="title"></cpn3>
</div>
//子组件
<template id="cpn3">
    <div>
        <h1>{{ctitle}}</h1>
        <p>orange</p>
    </div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    //子组件
    Vue.component("cpn3", {
        template: "#cpn3",
        // 组件里的data是一个函数,必须要返回一个对象,变量写在返回对象里
        props: {
            ctitle: {
                type: String,
                default () {
                    return {}
                }
            }
        }
    })
	//父组件
    const app = new Vue({
        el: "#app",
        data: {
            title: &#39;orange&#39;
        },
        methods: {},

    })
</script>
</body>
Copier après la connexion

Explication :
1. Écrivez d'abord le composant de séparation du modèle de base

2. composants enfants, en utilisant le mode objet, vous pouvez écrire les paramètres que vous devez transmettre dans les accessoires. Les paramètres sont également en mode objet, et le code est relativement clair

    //子组件
    Vue.component("cpn3", {
        template: "#cpn3",
        // 组件里的data是一个函数,必须要返回一个对象,变量写在返回对象里
        props: {
            ctitle: {
            //参数也使用对象形式,type传类型  default函数,是在找不到参数时返回一个值显示
                type: String,
                default () {
                    return {}
                }
            }
        }
    })
Copier après la connexion

2.

//父组件
    const app = new Vue({
        el: "#app",
        data: {
        //这里的title就是要传入子组件的属性  在父组件中定义
            title: &#39;orange&#39;
        },
        methods: {},

    })
Copier après la connexion

3. Liez les deux dans le paramètre du composant parent

 <div id="app">
	//可以理解为将父组件中title 赋值给 ctitle,这样子组件就可以使用父组件的data属性了
    <cpn3 :ctitle="title"></cpn3>
</div>
Copier après la connexion

4 Enfin, le nom de l'attribut défini par le sous-composant doit être utilisé dans le sous-composant

//子组件
<template id="cpn3">
    <div>
    //这里的属性名为ctitle
        <h1>{{ctitle}}</h1>
    </div>
</template>
Copier après la connexion

Vue du fils au parent

1. parent signifie que le contenu du sous-composant est transmis au composant parent, afin que le composant parent puisse utiliser les données du composant enfant à tout moment. La méthode d'utilisation est la suivante : Fonction personnalisée

1. Tout d'abord, créons une. produit de la barre latérale d'imitation Taobao. Cliquez ou déplacez la souris vers ce qui précède pour afficher le boîtier du produit contenu

Comment communiquer entre les composants parent et enfant dans Vue ? Parlons des modalités de transmission de père en fils et de fils en père.

2. En prenant l'image ci-dessus comme exemple, parlons de la transmission des composants de l'enfant au père

2.1. Séparons d'abord les composants enfants et les composants parents, et parlons-en un par un. Jetons d'abord un coup d'œil au code du composant enfant

<!-- 子组件 -->
<template id="cpn">
    <div>
        <h1>{{ctitle}}</h1>
        <button v-for="item in list" @click="goodsclick(item)">{{item.name}}</button>
    </div>
</template>
<script>
Vue.component("cpn", {
        template: &#39;#cpn&#39;,
        //父传子 props   
        props: {
            ctitle: {
                type: String,
                //找不到数据时
                default () {
                    return {}
                }
            }
        },
        data() {
            return {
                list: [{
                    id: &#39;phone&#39;,
                    name: &#39;手机&#39;
                }, {
                    id: &#39;tv&#39;,
                    name: &#39;电视&#39;
                }, {
                    id: &#39;p&#39;,
                    name: &#39;家电&#39;
                }, {
                    id: &#39;computer&#39;,
                    name: &#39;电脑&#39;
                }, ]
            }
        },
        //子传父 自定义事件
        methods: {
            // 自定义事件
            goodsclick(item) {
                this.$emit(&#39;itemclick&#39;, item)
            }
        }
    })
    </script>
Copier après la connexion

Explication : le sous-composant consiste à écrire un composant (html) et à l'emballer, et il peut être utilisé à tout moment. C'est l'équivalent du HTML, juste empaqueté (cette compréhension ne devrait poser aucun problème)

1 Le sous-composant a les mêmes fonctionnalités que les données de vue, les méthodes, cet attribut. Alors écrivez un tableau dans data, puis utilisez v-for pour parcourir et générer des boutons Ce n'est pas différent de l'écriture normale. Ensuite, écrivez une fonction, liez l'événement click et transmettez l'élément, qui est l'objet passé dans le tableau, dans la fonction,

<button v-for="item in list" @click="goodsclick(item)">{{item.name}}</button>
Copier après la connexion

2. c'est lorsque vous Dans la fonction d'événement de clic lié, une fonction personnalisée est envoyée au composant parent, qui est envoyée au composant parent

methods: {
            // 自定义事件
            goodsclick(item) {
            //itemclick就是自定义函数,并且将item也传过去给父组件
                this.$emit(&#39;itemclick&#39;, item)
            }
        }
Copier après la connexion

Comment communiquer entre les composants parent et enfant dans Vue ? Parlons des modalités de transmission de père en fils et de fils en père.

C'est l'achèvement du sous-composant. C'est le style du sous-composant. -component, comme le montre l'image ci-dessus

2, parlons ensuite de la façon dont le composant parent reçoit l'événement personnalisé du composant enfant

<!-- 父组件 -->
<div id="app">
    <cpn :ctitle="title" @itemclick="cpnclick"></cpn>
</div>
<script>
//父组件    
    const app = new Vue({
        el: "#app",
        data: {
            title: "title",
        },
        methods: {
            cpnclick(item) {
                console.log("cpnclick", item);
            }
        }
    })
</script>
Copier après la connexion

Expliquez-le : après avoir écrit le composant enfant, vous devez appeler. L'appel est simplement le nom de votre composant comme étiquette. Voici

<cpn :ctitle="title" @itemclick="cpnclick"></cpn>
Copier après la connexion
Écrivez une fonction dans le composant parent et liez-y l'événement personnalisé transmis par le composant enfant, afin que le composant enfant soit lié avec succès ainsi que le composant enfant. transfère les données vers le composant parent.

Ce chapitre est terminé

Plus Pour des connaissances liées à la programmation, veuillez visiter :

Introduction à la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal