首页 > 其他分享 >Vue中自定义组件监听事件传参

Vue中自定义组件监听事件传参

时间:2023-11-27 13:56:42浏览次数:47  
标签:传参 none Vue 自定义 箭头 value item 组件

自定义数字框组件如下

<template>
  <div class="count-box">
    <button @click="handleSub" class="minus">-</button>
    <input :value="value" @change="handleChange" class="inp" type="text">
    <button @click="handleAdd" class="add">+</button>
  </div>
</template>

<script>
export default {
  props: {
    value: {
      type: Number,
      default: 1
    }
  },
  methods: {
    handleSub () {
      if (this.value <= 1) {
        return
      }
      this.$emit('input', this.value - 1)
    },
    handleAdd () {
      this.$emit('input', this.value + 1)
    },
    handleChange (e) {
      // console.log(e.target.value)
      const num = +e.target.value // 转数字处理 (1) 数字 (2) NaN

      // 输入了不合法的文本 或 输入了负值,回退成原来的 value 值
      if (isNaN(num) || num < 1) {
        e.target.value = this.value
        return
      }

      this.$emit('input', num)
    }
  }
}
</script>

<style lang="less" scoped>
.count-box {
  width: 110px;
  display: flex;
  .add, .minus {
    width: 30px;
    height: 30px;
    outline: none;
    border: none;
    background-color: #efefef;
  }
  .inp {
    width: 40px;
    height: 30px;
    outline: none;
    border: none;
    margin: 0 5px;
    background-color: #efefef;
    text-align: center;
  }
}
</style>

展示效果:
image

当父组件使用子组件时,例如绑定了监听事件@input,此时需要事件的value值和其他参数,一起使用,步骤应该如下:

   <!-- 数字框组件 即希望保留原本的形参,又需要通过调用函数传参 可以使用 箭头函数 改写-->
<CountBox :value="item.goods_num" @input="(value)=>changeCount(value,item.goods_id,item.goods_sku_id)"></CountBox>

需要用到箭头函数,代码中的 @input="(value)=>changeCount(item)" 中的箭头函数接收 value 参数,这是由事件触发时传递给 input 事件的值。另外,item 参数是由上下文传递给 changeCount 方法的。

在这种情况下,箭头函数的使用是为了确保函数内的 this 指向是正确的,因为箭头函数不会改变 this 的指向,而是继承自外层作用域的 this。

image

标签:传参,none,Vue,自定义,箭头,value,item,组件
From: https://www.cnblogs.com/zgf123/p/17859069.html

相关文章

  • vue实现页面全屏、局部全屏等多方式全屏
    1、vuex创建全局变量在store/index中:importVuexfrom'vuex'Vue.use(Vuex)constuser={state:{//全屏fullscreen:false,},mutations:{//全屏SET_FULLSCREEN:(state,fullscreen)=>{state.fullscreen=fullscreen},},act......
  • 安装 Vue 开发者工具:装插件调试 Vue 应用
    (1)通过谷歌应用商店安装(国外网站)(2)极简插件:下载→ 开发者模式→ 拖拽安装 → 插件详情允许访问文件         https://chrome.zzzmh.cn/index下载的文件,解压。chrome浏览器,右上角点击-》更多工具=》扩展程序。打开开发者模式将解压的文件拖到空白区......
  • PIP换源_Pycharm快捷键_自定义文件头模板
    【一】PIP更换国内源永久换源打开控制台或终端,并输入以下命令:pipconfigsetglobal.index-urlhttps://mirrors.aliyun.com/pypi/simple/更改pip源后,可以通过以下命令验证:pipconfiggetglobal.index-url如果返回值为https://mirrors.aliyun.com/pypi/simple/,则表......
  • 【Cxx 20】使用 std::span 代替数组指针传参
    我们知道std::string_view可以创建std::string的一个视图,视图本身并不拥有实例,它只是保持视图映射的状态。在不修改实例的情况下,使用std::string_view会让字符串处理的性能大幅提升。实际上,对于那些连续的序列对象我们都可以创建这样一份视图,对于std::vector这样的对象可以提高某......
  • vue2跨级组件传值
    //祖先组件importSonfrom'./Son'exportdefault{components:{Son},provide(){return{money:1000000000}}}子孙组件<template> <div>  孙子组件  <p>这个是爷爷传给我的钱:{{money}}</p> </div&......
  • socket.on可以直接添加自定义事件吗,理解socket的事件触发与响应
    在Web开发中,socket.on通常是用于注册处理特定事件的回调函数的方法。它主要用于处理Socket.IO库中的预定义事件,例如"connect"、"disconnect"、"message"等。然而,Socket.IO也允许你添加自定义事件,以便在客户端和服务器之间进行自定义的双向通信。要使用socket.on来处理自定义事件,......
  • vue2兄弟组件传值
    //1创建一个公共的vue实例(bus)importVuefrom'vue'constbus=newVue()exportdefaultbus<!-- brother1--><template> <div>  兄弟1组件  <p>   <button@click="send">传值给兄弟2</button>  </p&......
  • VUE 安装环境
    安装vue 工具cnpminstall-g@vue/cli验证是否安装成功vue--version创建VUE项目(vue-demo,名字要小写)vuecreatevue-demo ......
  • 函数中的库函数与自定义函数
    1.函数是什么:在计算机科学中,子程序也就是函数,是一个大型程序中的某部分代码,由一个或多个语句组成。负责完成某项特定任务,而且相对于其他代码,具有相对的独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏,这些代码通常被集成为软件库。2.库函数举例:lo函数字符串操作函......
  • Java开发者的Python快速进修指南:自定义模块及常用模块
    好的,按照我们平常的惯例,我先来讲一下今天这节课的内容,以及Java和Python在某些方面的相似之处。Python使用import语句来导入包,而Java也是如此。然而,两者之间的区别在于Python没有类路径的概念,它直接使用.py文件的文件名作为导入路径,并将其余的工作交给Python解释器来扫描和处理。另......