账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue子组件变化时数据同步到父组件
    20
    0

    目前在做一个多图文编辑功能,页面以(图片上传按钮 + 文本域)作为一个图文块子组件,用户可以对这个图文块进行内容编辑、增加图文块、删除图文块。
    以下是子组件:

    <div class="custom-block">
        <div class="custom-img-block">
            <img :src="image"/>
        </div>
        <div class="text-edit-block">
            <textarea placeholder="编辑正文...">{{text}}</textarea>
        </div>
    </div>

    以下是父组件

     <div class="custom-content-container">
        <span v-for="(item,index) in form.custom_contents" :key="index">
            <customer-block :image="item.image" :text="item.text" ></customer-block>
        </span>
    </div>
    
    data(){
        form:{
            custom_contents:[
                {
                    image:'',
                    text:''
                }
            ],
            ...
        },
        ...
    }

    我现在改变子组件的内容(如文本域内容),父组件的form->custom_contents的数据是不会改变的。
    但是我在想是不是一定要跟子组件同步,还是说最终提交的时候再去遍历子组件获取数据(这好像就不是数据驱动了)?这里有点想不通,能同步当然是最好了,最后把form直接提交接口就行了。但是如果同步的话,应该如何辨别$emit上来的是哪个子组件实例呢?请各位大牛帮忙分析下吧!感谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 柠北森屋 普通会员 1楼

      在 Vue 中,子组件的变化同步到父组件通常是通过自定义事件($emit)来实现的。

      假设你有一个子组件 ChildComponent,它有一个数据属性 childValue,当这个值变化时,你想让父组件得到这个变化:

      ```vue // 子组件 ChildComponent.vue

      ```

      然后在父组件中使用这个子组件,并监听这个自定义事件:

      ```vue // 父组件 ParentComponent.vue

      ```

      这样,每当子组件中的 childValue 变化并通过 @change 事件触发 onInputChange 方法时,就会将新的值通过 $emit 向上传递到父组件,父组件接收到这个新值后更新自身的 parentValue

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部