关于封装表单编辑器的疑问

来源:5-10 表单组件-集成富文本编辑器 wangeditor

慕妹6057678

2023-11-16

老师你好,我在封装表单编辑器时的思路是:子组件引入wangEditor作为编辑器组件;父组件引入子组件。父组件通过属性给子组件传递初始显示的html字符串。子组件中,wangEditor本身有v-model的属性可以处理编辑器输入的数据。我的做法是,父组件传递数据a给子组件,子组件拷贝a作为数据b,用v-model绑定b,最后子组件通过分发事件将数据b传回父组件,父组件中的a数据就可以更新了。

我的疑问是,父组件a数据更新后,子组件因为接收a数据而a数据发生改变的缘故,子组件是不是又会重新渲染一次。我在子组件onUpdated回调中做了测试,当子组件本身修改数据b后,会触发一次onUpdated,当子组件通过分发事件将数据b传回父组件,父组件中的a数据更新后,又触发了一次onUpdated。

想请教下老师,这么做是不是不太好,有没有更好的方式呢。

写回答

1回答

五月的夏天

2023-11-17

如果你想实现双向绑定,可以在父组件直接通过v-model:xxx传值,这样子组件就可以直接修改父组件的值了,就不需要拷贝一次然后再分发事件,也可以在子组件定义一个修改值的方法,然后通过defineExpose暴露出去,然后父组件通过子组件的ref实例调用这个方法,

1
0

基于Vue3+Vite+TS,二次封装element-plus业务组件

集成大量实际样例,系统掌握前沿技术栈与二次组件库封装能力

447 学习 · 185 问题

查看课程