当前位置: 首页 > ai >正文

关于Vue自定义组件封装的属性/事件/插槽的透传问题

// parent.vue
<Myinputv-model="keyWords"placeholder="请输入内容"size="small"@input="input"@change="change"width="320"
><template #prepend><el-select v-model="select" placeholder="请选择" style="width: 115px"><el-option label="Restaurant" value="1" /><el-option label="Order No." value="2" /><el-option label="Tel" value="3" /></el-select></template><template #append><el-button @click="handleQuery">查询</el-button></template>
</Myinput>// child.vue<el-inputv-bind="$attrs"class="e-input":style="inputStyle"v-on="$listeners"@input="$emit('input', $event)"@change="$emit('change', $event)"><template v-for="(_, slotName) in $slots" #[slotName]><slot :name="slotName"></slot></template></el-input>
内部属性: $attrs、$listeners、$slots

一、属性的透传

v-bind=“$attrs”: 只会读取子组件【props 选项】中没有申明过的属性

二、自定义事件的透传

方式一:

v-on=“$listeners”: 会将父组件所有事件监听器传递到子组件内部元素

<el-input v-bind="$attrs" class="e-input" :style="inputStyle" v-on="$listeners">
</el-input>

方式二: 直接在子组件上触发事件

<el-inputv-bind="$attrs"class="e-input":style="inputStyle"@input="$emit('input', $event)"@change="$emit('change', $event)"
>
</el-input>

方式三: 手动触发事件

export default {props: ["value"],computed: {inputValue: {get() {return this.value;},set(val) {this.$emit("input", val);},},},methods: {handleChange(e) {this.$emit("change", e.target.value);},},
};

三、插槽的透传

“$slots”: 获取所有父组件传递的插槽(默认、具名、作用域)

<template v-for="(_, slotName) in $slots" #[slotName]><slot :name="slotName"></slot>
</template>

四、获取子组件实例

// parent.vue
<Myinput ref="elInp" />mounted() {// 输入框聚焦this.$refs.elInp.setFocus();},
//child.vue<el-inputref="inputRef"v-bind="$attrs"class="e-input":style="inputStyle"v-on="$listeners"/>methods: {setFocus() {this.$refs.inputRef.focus();},
},

el-input 二次封装示例

http://www.xdnf.cn/news/7821.html

相关文章:

  • 密码合集(不定期更新)
  • 【VS2017】cpp文件字符编码异常导致编译报错
  • 老牌硬件检测工具的现代应用场景分析
  • 【动手学深度学习】1.3. 各种机器学习问题
  • spring的注入方式都有什么区别
  • 网页表格转换为markdown
  • 仅修改文件名会导致文件的MD5值发生变化吗?
  • 制造业ERP系统选型与实施避坑探讨
  • java加强 -网络编程
  • iframe加载或者切换时候,短暂的白屏频闪问题解决
  • Oracle Enqueue Names
  • MySQL中的重要常见知识点(入门到入土!)
  • QT中信号和事件的区别
  • Panasonic松下焊接机器人节气
  • Web3 领域中的一些专业术语
  • Nginx负载均衡配置详解
  • 14、自动配置【源码分析】-初始加载自动配置类
  • 双活数据中心解决方案
  • KubeVirt虚拟机热迁移
  • 第六章 Freertos智能小车循迹模块
  • 【Oracle 专栏】清理用户及表空间
  • STM32 I2C硬件读写
  • MLXJAX框架学习
  • 时源TS4RPSA2-3-3导电硅胶
  • 【已解决】docker search --limit 1 centos Error response from daemon
  • React中使用 Ant Design Charts 图表
  • 31-35【动手学深度学习】深度学习硬件
  • Spark Core 源码关键环节的深度解析
  • [Vue]跨组件传值
  • PCB 横截面几何形状