Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • JavaScript

  • TypeScript

  • Vue

    • Vue 编码指南
    • vue-cli 启动本地服务局域网不能访问的原因分析
    • 解决 Vue 相同路由参数不同不会刷新的问题
    • 解决 vuex requires a Promise polyfill in this browser 问题
    • 关于父组件通过 v-on 接收子组件多个参数的一点研究
    • Vue $attrs 和 $listeners
    • Vue axios 发送 Form Data 数据格式请求
    • Vue 开发技巧
    • Vue 动态路由
    • Vue 集成 UEditor 富文本编辑器
    • Vue 修饰符
    • Vue 问题集合
    • Vue props 传多值的问题
    • vue-router 在 IE11 下手动更改 URL 的 hash 不会触发路由
    • vue-router 路由参数刷新消失的问题
    • 那些年被我们忽略的 vue 语法
    • vue 生命周期深入
    • vue 组件通信深入
    • vue 组件通信深入 Vuex
    • vue项目移动端、pc端适配方案
    • vuepress 如何引入 vuex
  • ElementUI

  • React

  • AntD

  • 前端
  • Vue
Henry
2020-06-20

关于父组件通过 v-on 接收子组件多个参数的一点研究

写组件的时候遇到一个需求, 我需要在子组件向父组件传递信息

this.$emit('myEvent', '信息1', '信息2')
1

在父组件使用 v-on 来接收

<my-component @myEvent="handler" />
1

这样就可以接收到子组件传递的 信息1 和 信息2 , easy.

handler(param1, param2) {
  console.log(param1, param2) // => 信息1, 信息2
}
1
2
3

但我需要在内联语句中传递一个额外参数, 平时子组件只附带一个参数的时候, 可以使用 $event

<my-component @myEvent="handler('extra parameter', $event)" />
1

但是$event (opens new window)只接收第一个参数, 也就是这么写只能接收到 信息1

handler(extra, param1, param2) {
  console.log(extra, param1, param2) // => 'extra parameter', 信息1, undefined
}
1
2
3

可以使用 arguments:

<my-component @myEvent="handler('extra parameter', arguments[0], arguments[1])" />
1

可以获取到参数了

handler(extra, param1, param2) {
  console.log(extra, param1, param2) // => 'extra parameter', 信息1, 信息2
}
1
2
3

因为实际上这里的 $event 就是 arguments[0] , 下面这一段现在的 vue 文档上好像已经找不到了, 但是 arguments 还是可以用的

arguments

由于官方已经不推荐这种写法了, 所以我们可以用另一种方法:

<my-component @myEvent="(param1, param2) => handler('extra parameter', param1, param2)" />
1

先接收参数, 再整合参数调用方法

编辑 (opens new window)
#Vue
上次更新: 5/27/2023, 1:02:05 PM
解决 vuex requires a Promise polyfill in this browser 问题
Vue $attrs 和 $listeners

← 解决 vuex requires a Promise polyfill in this browser 问题 Vue $attrs 和 $listeners→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式