vue子传父的一种新方法:this.$emit(‘input‘, value)可实现实时向父组件传值

今天要说的就是利用v-model和this.$emit('input',value)实现子传父。

众所周知,v-model是给input绑定,方便对表单的双向绑定。

其实,v-model是个语法糖,具体案例如下所示。

javascript 复制代码
<input v-model="inputValue">

相当于
<input v-bind:value="inputValue" v-on:input="inputValue = $event.target.value">

在自定义组件中
<my-component v-model="inputValue"></my-component>

相当于
<my-component v-bind:value="inputValue" v-on:input="inputValue = argument[0]">
</my-component>

这个时候,inputValue接受的值就是input事件的回调函数的第一个参数,
所以在自定义组件中,要实现数据绑定,还需要$emit去触发input的事件。
this.$emit('input', value)//这个是在子组件中调用的
其实通过this.$emit('input', value)已经实现了子传父

我们今天所说的是自定义组件实时子传父,请继续看下面代码:

javascript 复制代码
在父组件中调用子组件
<my-component v-model="inputValue"></my-component>

子组件
watch: {
  // sonVal是子组件的一个变量值,当他变化的时候就会触发handler将新值传给父组件的inputValue
  sonVal: {
    handler (newVal, oldVal) {
      this.$emit('input', newVal)
    },
    deep: true,
  }
}
相关推荐
moshuying15 分钟前
别让AI焦虑,偷走你本该有的底气
前端·人工智能
GIS之路1 小时前
ArcPy,一个基于 Python 的 GIS 开发库简介
前端
可夫小子3 小时前
OpenClaw基础-为什么会有两个端口
前端
喝拿铁写前端3 小时前
Dify 构建 FE 工作流:前端团队可复用 AI 工作流实战
前端·人工智能
喝咖啡的女孩4 小时前
React 合成事件系统
前端
从文处安4 小时前
「九九八十一难」组合式函数到底有什么用?
前端·vue.js
前端Hardy4 小时前
面试官:JS数组的常用方法有哪些?这篇总结让你面试稳了!
javascript·面试
用户5962585736064 小时前
戴上AI眼镜逛花市——感受不一样的体验
前端
yuki_uix4 小时前
Props、Context、EventBus、状态管理:组件通信方案选择指南
前端·javascript·react.js
老板我改不动了4 小时前
前端面试复习指南【代码演示多多版】之——HTML
前端