Vue3随笔(一)
Vue3:父组件与子组件的双向绑定
起因:想自己封装一个通用组件方便后续开发,结果因为使用defineProps的方式传递参数发现无法通过子组件修改父组件传递过来的参数
官方文档解释:所有的 props 都遵循着单向绑定原则,props 因父组件的更新而变化,自然地将新的状态向下流往子组件,而不会逆向传递。这避免了子组件意外修改父组件的状态的情况,不然应用的数据流将很容易变得混乱而难以理解,所以想要直接在子组件修改props就是不可能的?!想过在子组件中使用自定义事件将值传递给父组件实现修改父组件中的值,但是看到代码相对复杂并且修改一个就要使用一次自定义事件,直接让代码显得杂乱无章,苦思冥想之际,看到一篇文章介绍Vue3中一个新的宏函数defineModel,在子组件中使用defineModel来定义需要传递的参数,父组件中使用v-model绑定传递的参数,就可以实现父组件与子组件中数据的双向绑定。
以下是一个简单示例
父组件代码
1 | <template> |
子组件代码
1 | <template> |
传递多个参数的形式如下
父组件
1 | <template> |
子组件
1 | <template> |
使用defineModel来实现父组件与子组件数据的双向绑定,比原始的方法相对简化了一些代码,并且更易于理解。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Woals'Blog!
