多个子组件使用父组件的传入的值,结果不正确。

来源:4-2 父子组件间的数据传递

zhxs_nn

2018-12-10

我的代码是按照老师写的,先用props接收父组件的值,然后在data里面重新定义了一个值,修改了一个组件里面的值之后,另外一组件里面也会跟着变。

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.min.js"></script>
</head>
<body>
<div id="app">
    {{msg}}
    <counter :count="obj"></counter>
    <counter2 :count="obj"></counter2>
</div>
<script>
    var counter  = {
        props:['count'],
        data : function () {
            return {
                user:this.count
            }
        },
        template : "<div @click='handleClick'>{{user}}</div>",
        methods : {
            handleClick:function () {
//                this.count ++;
               console.log('counter');
                this.user.name ='counter';
            }
        }
    };
    var counter2  = {
        props:['count'],
        data : function () {
            return {
                user:this.count
            }
        },
        template : "<div @click='handleClick2'>{{user}}</div>",
        methods : {
            handleClick2:function () {
//                this.count ++;
                console.log('counter2');
                this.name.name ='counter2';
            }
        }
    };
    var vm = new Vue(
        {
            el: '#app',
            data: {
                msg: "hello world",
                obj:{"name":"nhy"}
            },
            components: {
                counter,
                counter2,
            }
        }
    );
</script>
</body>
</html>
写回答

1回答

Dell

2018-12-10

你传递的是一个对象作为参数,是引用类型,需要做深拷贝,而不是浅拷贝

0
2
Dell
回复
zhxs_nn
JSON.parse(JSON.stringify(对象))
2018-12-16
共2条回复

Vue2.5-2.6-3.0开发去哪儿网App 零基础入门到实战

课程紧跟Vue3版本迭代,企业主流版本Vue2+Vue3全掌握

10675 学习 · 8191 问题

查看课程