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,
  }
}
相关推荐
shadow fish12 分钟前
react学习记录(三)
javascript·学习·react.js
小疙瘩29 分钟前
element-ui 中 el-upload 多文件一次性上传的实现
javascript·vue.js·ui
Aliex_git37 分钟前
浏览器 API 兼容性解决方案
前端·笔记·学习
独泪了无痕39 分钟前
useStorage:本地数据持久化利器
前端·vue.js
程序员林北北1 小时前
【前端进阶之旅】JavaScript 一些常用的简写技巧
开发语言·前端·javascript
全栈前端老曹1 小时前
【Redis】Redis 持久化机制 RDB 与 AOF
前端·javascript·数据库·redis·缓存·node.js·全栈
NEXT061 小时前
受控与非受控组件
前端·javascript·react.js
NEXT061 小时前
防抖(Debounce)与节流(Throttle)解析
前端·javascript·面试
mqiqe2 小时前
pnpm 和npm 有什么区别?
前端·npm·node.js
呆子小木心3 小时前
Vue2或Vue3项目引用百度地图
javascript·vue.js·typescript·前端框架·html5