亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue3組件間傳值的坑有哪些及怎么解決

發布時間:2023-05-20 11:36:02 來源:億速云 閱讀:136 作者:iii 欄目:編程語言

這篇文章主要講解了“Vue3組件間傳值的坑有哪些及怎么解決”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Vue3組件間傳值的坑有哪些及怎么解決”吧!

    實例填坑

    坑一
    1. 發現天坑

    我們通過一個計數器組件來演示這個坑,當想對父組件傳遞過來的值做操作時,發現操作無效,先看代碼:

    <!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('counter',{
           props: ['count'],
          template: `<div @click="count+=1">{{count}}</div>`
        });
        const vm = app.mount('#root');
    </script>
    </html>

    在上面的代碼中,我們定義了一個counter組件接收父組件的一個count值,當點擊這個顯示的值時,我們做加一操作。這時候我們運行代碼會發現,我們的值并不會完成加一操作,而是會報父組件傳遞過來的值是只讀的:

    Vue3組件間傳值的坑有哪些及怎么解決

    2. 填坑時刻

    那假如我們要完成這個加一的功能怎么辦呢?答案就是我們復制一份父組件傳遞過來的值,對我們自己的值進行操作:

    <!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('counter',{
           props: ['count'],
           data(){
            return{
                mCount:this.count
            }
           },
          template: `<div @click="mCount+=1">{{mCount}}</div>`
        });
        const vm = app.mount('#root');
    </script>
    </html>

    這時候我們再運行代碼就會發現我們可以做加一操作了:

    Vue3組件間傳值的坑有哪些及怎么解決

    坑2:
    1.發現天坑

    當我們定義一個單詞名稱比較長的屬性,并且用“-”分隔符連接的時候,子組件無法接收到正確的值,顯示NaN。代碼如下:

    <!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('test',{
           props: ['content-helloworld'],
          template: `<div>{{content-helloworld}}</div>`
        });
        const vm = app.mount('#root');
    </script>
    </html>

    在上面的代碼中,我們使用content-helloworld這個屬性在父組件和子組件之間傳值,按照我們的理解,應該是能傳遞成功的,但是顯示的結果卻不正確

    Vue3組件間傳值的坑有哪些及怎么解決

    上面到坑也是VUE中的單向數據流的概念,即子組件可以使用父組件傳遞過來的數據,但是不能修改父組件傳遞過來的數據

    2.填坑時刻

    當我們定義的屬性值中有用“-”分隔符分隔時,我們在接收值的時候,需要將屬性名改成駝峰命名的方式,如上面的例子中父組件使用content-helloworld傳遞值到子組件,那么子組件接收到時候應該將其改成駝峰命名方式:使用contentHelloworld接收

    <!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('test',{
           props: ['contentHelloworld'],
          template: `<div>{{contentHelloworld}}</div>`
        });
        const vm = app.mount('#root');
    </script>
    </html>

    這樣值就能正確顯示了

    Vue3組件間傳值的坑有哪些及怎么解決

    感謝各位的閱讀,以上就是“Vue3組件間傳值的坑有哪些及怎么解決”的內容了,經過本文的學習后,相信大家對Vue3組件間傳值的坑有哪些及怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    青海省| 江陵县| 阜阳市| 兴安盟| 获嘉县| 二连浩特市| 北海市| 碌曲县| 商城县| 丽水市| 册亨县| 陇川县| 出国| 张家界市| 新晃| 沙洋县| 肇源县| 咸丰县| 岳池县| 娄烦县| 额济纳旗| 镇远县| 蒙自县| 普兰店市| 福建省| 胶南市| 宁南县| 毕节市| 贵阳市| 来安县| 扎兰屯市| 绥中县| 河东区| 和林格尔县| 搜索| 读书| 天水市| 富顺县| 桦南县| 达日县| 修文县|