qq_45868411 2023-04-21 18:26 采纳率: 0%
浏览 21

Vue3+ts+element-plus

img


大家好,想问下这个报错是怎么回事,使用button组件ts提示报错,该怎么解决呢

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-21 21:14
    关注
    • 这篇文章讲的很详细,请看:vue+element-ui中button点击后不恢复原样
    • 除此之外, 这篇博客: 结合Vue3.0学习elementUi 源码中的 (一)、button组件的简单解析 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • button部分是由 button组件和button-group组件共同组成,
      该部分的文件结构如下:
      在这里插入图片描述
      index文件是用于注册各组件的,方式和上面了解的一样,内容文件是.vue文件,通过名称可以知道对应的组件内容,直接看内容

      1. button组件
      <template>
        <button
          class="el-button"
          @click="handleClick"
          :disabled="buttonDisabled || loading"
          :autofocus="autofocus"
          :type="nativeType"
          :class="[
            type ? 'el-button--' + type : '',
            buttonSize ? 'el-button--' + buttonSize : '',
            {
              'is-disabled': buttonDisabled,
              'is-loading': loading,
              'is-plain': plain,
              'is-round': round,
              'is-circle': circle
            }
          ]"
        >
          <i class="el-icon-loading" v-if="loading"></i>
          <i :class="icon" v-if="icon && !loading"></i>
          <span v-if="$slots.default"><slot></slot></span>
        </button>
      </template>
      <script>
        export default {
          name: 'ElButton',
      
          inject: { // 注入对象,表单对象时要用到
            elForm: {
              default: ''
            },
            elFormItem: {
              default: ''
            }
          },
      
          props: {
            type: { // 按钮类型
              type: String,
              default: 'default'
            },
            size: String, //按钮尺寸
            icon: { // 图标类名 
              type: String,
              default: ''
            },
            nativeType: { // 原生 type 属性
              type: String,
              default: 'button'
            },
            loading: Boolean, // 是否加载状态
            disabled: Boolean, //是否禁用状态
            plain: Boolean, // 是否朴素按钮
            autofocus: Boolean, // 是否聚焦
            round: Boolean, //是否圆角
            circle: Boolean // 是否圆形
          },
      
          computed: {
            _elFormItemSize() { // 获取form表单对象的属性
              return (this.elFormItem || {}).elFormItemSize;
            },
            buttonSize() { // 按钮的大小
              return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;
            },
            buttonDisabled() { // 按钮是否禁用
              return this.disabled || (this.elForm || {}).disabled;
            }
          },
      
          methods: {
            handleClick(evt) { // 向父级传值,方法名称click
              this.$emit('click', evt);
            }
          }
        };
      </script>
      
      

      首先是template部分,这里面是一个button标签,button标签包裹两个i标签和一个span标签,第一i标签是指定loading图标,第二个是自定义图标,span标签是用于存放插槽内容的,也就是button的文字描述,提交或重置之类的。
      其次是button中用到的属性,都在上面代码有注释

      1. button-group组件
      <template>
        <div class="el-button-group">
          <slot></slot>
        </div>
      </template>
      <script>
        export default {
          name: 'ElButtonGroup'
        };
      </script>
      

      这个组件没有什么内容就是向该组件内部插入内容,可以有多个按钮

    评论

报告相同问题?

问题事件

  • 创建了问题 4月21日