前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录一下Vue中父子组件数据双向绑定

记录一下Vue中父子组件数据双向绑定

作者头像
裴大头
发布2022-01-17 13:53:40
6300
发布2022-01-17 13:53:40
举报
文章被收录于专栏:裴大头的专栏

在vue项目的开发过程中,必不可少的场景就是父子组件的交互,所以在这里整理一下父子组件数据的双向绑定。首先父组件数据改变时,子组件的props也会改变,所以主要是解决,子组件改变时触发父组件改变。

直接上代码

父组件:父组件一个变量msg,首先通过props给子组件传过去,再加vue的v-model指令实现父子组件数据的双向绑定。

代码语言:javascript
复制
<template>
    <div class="index">
        <h2>父组件</h2>
        <input v-model="msg" type="text" />
        <children :msg="msg" v-model="msg" />
    </div>
</template>

<script>
import children from "../components/Children";
export default {
    name: "father",
    components: {
        children,
    },
    data() {
        return {
            msg: "大头大头下雨不愁",
        };
    },
};
</script>
复制

子组件:子组件中绑定父组件传过来的msg,再加上@input="

代码语言:javascript
复制
<template>
    <div>
        <h2>子组件</h2>
        <input type="text" :value="msg" @input="$emit('input', $event.target.value)">
    </div>
</template>

<script>
    export default {
	name: "children",
        props: {
            msg: {
                type: String,
                default: ''
            },
        },
    }
</script>
复制

这样先说一下,子组件中不能直接使用v-model,原因是不允许子组件改变父组件传过来的props的内容。

其实父组件的v-model=“msg"等同于:value=“msg” @input=”(

所以说子组件的@input方法调用的其实是父组件的@input方法从而改变父组件的msg。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 直接上代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档