vue3 + antdesignvue(element同理) 完美封装Input无需定义繁琐api(开箱即用)

该文章探讨了在Vue.js中如何使用v-model和插槽进行父页面到子页面的数据通信。示例展示了如何在Cinput组件中通过v-model绑定父页面的modalValue,并在插槽中定义前缀模板。子页面通过v-bind接收父页面属性,并利用$attrs和$slots动态绑定插槽内容,简化API交互。在mounted生命周期钩子中,使用ref访问子组件的方法和属性。
摘要由CSDN通过智能技术生成
//父页面
<Cinput v-model="modalValue">
// 插槽举例
   <template #prefix>
      <user-outlined type="user" />
   </template>
 </Cinput>
//子页面
<template>
  <div class="my-input">
    // v-bind绑定父级传递属性诸如 placeholder...
    <a-input ref="CInput" v-bind="$attrs">
        // 动态绑定插槽无需定义诸多api
      <template v-for="(value, name) in $slots" #[name]="slotData">
        <slot :name="name" v-bind="slotData || {}" />
      </template>
    </a-input>
  </div>
</template>

<script>

export default {
  data() {
    return {
      modalValue: ''
    }
  },
  mounted() {
    // 创建ref
    const entries = Object.entries(this.$refs.CInput)
    for (const [key, value] of entries) {
      this[key] = value
    }
       // $slots插槽内容
    console.log(entries, this.$slots)
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值