组件优化的两三事(二):input块组件优化
最近在写一个动态表单的组件,可见文章 vue: 动态表单实现(单问题线)
在写该组件时,我在开始所想实现的的是每个组件达到最小块,再将块组合到表单中。但在实现时,若我把input封装成一个组件,页面实现是没有问题的,但在该组件的答案获取确实一个极大的问题。
关于子组件向父组件传值,我们最通常用的也是最先想到的就是使用$emit,但这首先有个前提是子组件有个交互事件来触发,后父组件有个地方可以存值。
我最初想到的的方法:
首先我们说的input组件是有一个至多个input组成。
我们将组件中的每个input加上change或blur事件,当出发事件时,要获取整个组件的所有input值,传递给父组件,父组件拿什么变量来存呢?就是要父组件通过prop提前告诉子组件该变量名,子组件在告诉父组件时,就需要把变量名在告诉会回给父组件
这是一个比较麻烦的流程,vue有一个方法可以稍微简化一点,就是使用v-model:
关于该方法,其实在vue教程文档中已明细讲述:自定义组件的-v-model
下面是我的个人理解与使用:
父