鍍金池/ 問(wèn)答/人工智能  HTML/ vue中用++運(yùn)算符修改props值與+1修改props的區(qū)別?代碼如下:

vue中用++運(yùn)算符修改props值與+1修改props的區(qū)別?代碼如下:

在學(xué)習(xí)vue過(guò)程中,遇到如下問(wèn)題,望道友幫幫忙。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>中央事件bus</title>
</head>
<body>
    <div id="app">
        <div>{{coun}}</div>
        <addbtn :count="coun"></addbtn>
        <subbtn :count="coun"></subbtn>
    </div>

    <script src="./vue.js"></script>
    <script>
        var busVM = new Vue();
        var vm = new Vue({
            el:"#app",
            data:{
                coun:0
            },
            components:{
                'addbtn':{
                    template:`<button @click="addcount">+</button>`,
                    props:["count"],
                    methods:{
                        addcount(){
                            busVM.$emit("changeCount",++this.count);
                        }
                    }
                },
                'subbtn':{
                    template:`<button @click="subcount">-</button>`,
                    props:["count"],
                    methods:{
                        subcount(){
                            busVM.$emit("changeCount",this.count-1);
                        }
                    }
                }
            },
            mounted:function(){
                busVM.$on("changeCount",function(val){
                    this.coun = val
                }.bind(this))
            }
        });
    </script>
</body>
</html>

圖片描述

在子組件中用++修改時(shí)會(huì)報(bào)如上錯(cuò)誤,而用+1就不會(huì),為什么呢?

回答
編輯回答
你的瞳

報(bào)錯(cuò)信息很直接呀,說(shuō)的是你壓根就不應(yīng)該在子組件里修改prop,因?yàn)樗鼈兎凑紩?huì)被父組件覆蓋掉。以vue的實(shí)現(xiàn)原理來(lái)看,沒(méi)有必要地修改狀態(tài)會(huì)拖累性能。

vue認(rèn)為這種行為是新手常出現(xiàn)的bug,所以報(bào)警告。要是知道自己在干什么的話(huà),可以不管。

2017年3月16日 18:04