vue 如何更优雅实现父子组件双向绑定?

我想封装一个公用的富文本子组件,父子组件传参使用props, $emit传参,子组件使用props接收参数content,在created 设置初始值,在watch监听父组件的改变的值content改变子组件的值valueData(比如请求接口后父组件传值渲染子组件),通过$emit 监听子组件富文本改变的同时修改父组件的值;
但是这样会导致子组件富文本每输入一个字都会触发 $emit 传到父组件,改变父组件的值,然后子组件又触发watch 修改一遍子组件的valueData,绕了一圈;
请教下有没有更优雅的方案(除了vuex)?

子组件VueEditor.vue
image.png

父组件
image.png

阅读 4k
4 个回答

参考自定义v-model的用法

vue-editor 失去焦点的时候emit可否?

在原先基础上加防抖

父组件通过v-model绑定子组件数据,子组件里这样写:

props: {
  value: {
    type: String,
    required: true
  }
},
computed: {
  valueData: {
    get() {
      return this.value
    },
    set(val) {
      this.$emit('input', val)
    }
  }
}

你原先子组件里写的content变量和watch监听都去掉。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题