vue组件中的信息传递

  • Post author:
  • Post category:vue




vue组件中的信息传递



父组件传递数据给子组件
  • 子组件不能直接使用父组件中的数据。

    父组件可以通过

    props

    属性向子组件传值

传递数据的方法:

  1. ​ 在父组件中通过v-bind:自定义接受名=“传递的数据”
  2. ​ 在子组件中用props:[“自定义接受名”],来接收数据
  3. ​ 接受之后在子组件中使用的名称为”自定义接受名”
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="vue2.5.16.js"></script>
</head>

<body>
    <div id="app">
        <component1 v-bind:parent-msg="msg"></component1>
    </div>
    <template id="myTemplate">
        <p>
            子组件使用:{{ parentMsg }}
        </p>
    </template>
</body>
<script src="../js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            msg: "我是父组件的数据",
        },
        methods: {},
        components:{
            // 不允许使用驼峰
        	component1:{
                // 选择对应模板ID
        		template: "#myTemplate",
                // 使用props来接收传过来的数值
        		props:["parentMsg"],
                data(){
                    return{}
                },
            }
        }
    })
</script>
</body>

</html>

这里需要注意的点:

  • 在父组件传递过来的数据是只有可读属性的,无法重新赋值,重新赋值会报错(也就是说,子组件不要直接去修改父组件中的数据)。
  • 在命名子组件名称时不能使用驼峰命名。
  • 子组件里的data数据是和props里面的数据是不一样的,data里面的数据是子组件私有的,而props里面的数据是父组件传递过来的。


父组件将方法传递给子组件
  • 父组件通过事件绑定机制,将父组件的方法传递给子组件

传递方法

  1. ​ 在父组件中使用v-on/@自定义名=“要传递的方法”
  2. ​ 在子组件中不需要去直接接收,通过子组件自定义方法去调用
  3. ​ 在自定义方法中写入this.$emit(“自定义名”);

示例代码如下:

<!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">
    <title>Document</title>
    <link rel="stylesheet" href="../SASS/tailwind.css">
</head>

<body>
    <div id="app">
        <!--在父组件中使用v-on/@自定义名="要传递的方法"-->
        <component1 @parent-show="fatherClick"></component1>
    </div>
    <template id="myTemplate">
        <button @click="sonClick">
            点击
        </button>
    </template>
</body>
<script src="../js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {},
        methods: {
            fatherClick(){
                console.log("我是父组件的点击事件");
            }
        },
        components:{
            // 不允许使用驼峰
        	component1:{
                // 选择对应模板ID
        		template: "#myTemplate",
                // 使用props来接收传过来的数值
        		props:[],
                data(){
                    return{}
                },
                methods: {
                    sonClick(){
                        <!--在自定义方法中写入this.$emit("自定义名");-->
                        this.$emit("parent-show")
                    }
                }
            }
        }
    })
</script>

</html>

以上仅供参考。



版权声明:本文为xiaoChenPengYou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。