Maison > interface Web > Voir.js > Quelles sont les méthodes pour éviter les pièges lors du passage de valeurs entre les composants Vue3 ?

Quelles sont les méthodes pour éviter les pièges lors du passage de valeurs entre les composants Vue3 ?

WBOY
Libérer: 2023-05-15 08:34:05
avant
1200 Les gens l'ont consulté

    Instance de remplissage des fosses

    Pit one

    1. Découverte de la fosse

    Nous utilisons un composant compteur pour démontrer cette fosse Lorsque nous voulons opérer sur la valeur transmise par le composant parent, nous constatons que l'opération. n'est pas valide. Regardons-le d'abord Code :

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://unpkg.com/vue@next"></script>
        <title>组件间传值</title>
    </head>
    <body>
        <div id="root"></div>
    </body>
    <script>
        const app = Vue.createApp({
            data() {
                return {
                    num:0
                }
            },
           template: `
                    <div>
                       <counter :count = "num"/>
                    </div>
                    ` 
        });
        // 定义一个test组件
        app.component(&#39;counter&#39;,{
           props: [&#39;count&#39;],
          template: `<div @click="count+=1">{{count}}</div>`
        });
        const vm = app.mount(&#39;#root&#39;);
    </script>
    </html>
    Copier après la connexion

    Dans le code ci-dessus, nous définissons un composant compteur pour recevoir une valeur de comptage du composant parent Lorsque nous cliquons sur la valeur affichée, nous en ajoutons une. Lorsque nous exécutons le code à ce moment-là, nous constaterons que notre valeur ne terminera pas l'opération d'incrémentation, mais signalera que la valeur transmise par le composant parent est en lecture seule :

    Quelles sont les méthodes pour éviter les pièges lors du passage de valeurs entre les composants Vue3 ?

    Remplissage du moment du trou
    2.

    Et si nous voulons Que dois-je faire pour remplir cette fonction plus une ? La réponse est que nous copions la valeur transmise par le composant parent et opérons sur notre propre valeur :

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://unpkg.com/vue@next"></script>
        <title>组件间传值</title>
    </head>
    <body>
        <div id="root"></div>
    </body>
    <script>
        const app = Vue.createApp({
            data() {
                return {
                    num:0
                }
            },
           template: `
                    <div>
                       <counter :count = "num"/>
                    </div>
                    ` 
        });
        // 定义一个test组件
        app.component(&#39;counter&#39;,{
           props: [&#39;count&#39;],
           data(){
            return{
                mCount:this.count
            }
           },
          template: `<div @click="mCount+=1">{{mCount}}</div>`
        });
        const vm = app.mount(&#39;#root&#39;);
    </script>
    </html>
    Copier après la connexion

    Lorsque nous exécutons à nouveau le code, nous constaterons que nous pouvons en ajouter une :

    Quelles sont les méthodes pour éviter les pièges lors du passage de valeurs entre les composants Vue3 ?

    Pit 2 :

    1 . J'ai trouvé le gouffre

    Lorsque nous définissons un attribut avec un nom de mot long et le connectons avec le séparateur "-", le sous-composant ne peut pas recevoir la valeur correcte et affiche NaN. Le code est le suivant :

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://unpkg.com/vue@next"></script>
        <title>组件间传值</title>
    </head>
    <body>
        <div id="root"></div>
    </body>
    <script>
        const app = Vue.createApp({
            data() {
                return {
                    content:"hello world"
                }
            },
           template: `
                    <div>
                       <test :content-helloworld = "content"/>
                    </div>
                    ` 
        });
        // 定义一个test组件
        app.component(&#39;test&#39;,{
           props: [&#39;content-helloworld&#39;],
          template: `<div>{{content-helloworld}}</div>`
        });
        const vm = app.mount(&#39;#root&#39;);
    </script>
    </html>
    Copier après la connexion

    Dans le code ci-dessus, nous utilisons l'attribut content-helloworld pour transmettre des valeurs entre le composant parent et le composant enfant. Selon notre compréhension, le transfert devrait. réussir, mais l'affichage Le résultat est incorrectcontent-helloworld这个属性在父组件和子组件之间传值,按照我们的理解,应该是能传递成功的,但是显示的结果却不正确

    Quelles sont les méthodes pour éviter les pièges lors du passage de valeurs entre les composants Vue3 ?

    上面到坑也是VUE中的单向数据流的概念,即子组件可以使用父组件传递过来的数据,但是不能修改父组件传递过来的数据

    2.填坑时刻

    当我们定义的属性值中有用“-”分隔符分隔时,我们在接收值的时候,需要将属性名改成驼峰命名的方式,如上面的例子中父组件使用content-helloworld传递值到子组件,那么子组件接收到时候应该将其改成驼峰命名方式:使用contentHelloworld

    Quels sont les pièges du transfert valeurs entre les composants Vue3 ?

    Le piège mentionné ci-dessus est également le concept de flux de données unidirectionnel dans VUE, c'est-à-dire que les composants enfants peuvent utiliser les données transmises par le composant parent, mais ne peuvent pas modifier les données transmises. par le composant parent

    Quelles sont les méthodes pour éviter les pièges lors du passage de valeurs entre les composants Vue3 ?2. Le moment de remplir la fosse

    🎜Lorsque les valeurs d'attribut définies sont séparées par des délimiteurs "-", nous devons changer le nom de l'attribut en casse chameau lors de la réception de la valeur Pour. exemple, dans l'exemple ci-dessus, le composant parent utilise content-helloworld Passez la valeur au sous-composant, puis le sous-composant doit la changer en dénomination camel lors de sa réception : utilisez contentHelloworld de recevoir 🎜
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://unpkg.com/vue@next"></script>
        <title>组件间传值</title>
    </head>
    <body>
        <div id="root"></div>
    </body>
    <script>
        const app = Vue.createApp({
            data() {
                return {
                    content:"hello world"
                }
            },
           template: `
                    <div>
                       <test :content-helloworld = "content"/>
                    </div>
                    ` 
        });
        // 定义一个test组件
        app.component(&#39;test&#39;,{
           props: [&#39;contentHelloworld&#39;],
          template: `<div>{{contentHelloworld}}</div>`
        });
        const vm = app.mount(&#39;#root&#39;);
    </script>
    </html>
    Copier après la connexion
    🎜 pour que la valeur s'affiche correctement🎜🎜🎜🎜

    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:yisu.com
    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