elementui封装技巧-如何封装Vue组件,你需要了解这个原理!

2023-08-29 0 2,251 百度已收录

需要打包什么样的内容

当一段代码在项目中出现两次的时候elementui封装技巧,就开始考虑是否应该封装它。 如果出现三次,就一定是封装的,大到一个页面、一个组件,小到一个函数、一个css样式

封装原理

下面将封装的公共组件称为子组件,引用公共组件的接口称为父组件。

封装的组件必须具备高性能、低耦合的特点,主要从以下几点出发:

1.数据从父组件传入

子组件本身不生成数据。 如果需要生成数据,只能在组件内部使用,不能传递出去。

父组件使用 props 向子组件传递参数:

// 父组件向子组件传值
props: {
  // 表格显示的数据
  tableData: {
    type: Array,
    default: function() {
      return [];
    }
  },
  // 表格的操作
  tableOption: {
    type: Array,
    default: function() {
      return [];
    }
  },
  // 控制操作列是否显示
  isOperate: {
    type: Boolean,
    default: function() {
      return false;
    }
  }
}

对于通过props传入的参数,不建议对其进行操作,因为父组件上的数据会同时改变(如果改变了,控件Taipei也会报错)。 如果数据需要改变,可以传递给父组件让父组件改变(在父组件中处理storm)。

穿越之门:Vue组件传值,你真的懂吗?

2.在父组件中处理风暴

父组件中处理的干扰是与前端交互的干扰,比如发起的axios请求,但并不是所有的干扰都在父组件中处理,比如组件内部的一些交互行为,或者处理的数据只是在该组件在内部传递,可以在子组件中处理。

// 子组件中
changeApproval(id) {
  this.$emit("pushId", id);
}
// 父组件中
<common-dialog @pushId="getId"></common-dialog>
getId(id) {
  this.approvalForm.approval = id;
}

3.记得留槽位

一个通用的组件往往无法完美适应所有的应用场景elementui封装技巧,所以在封装组件时,只需要完成组件80%的功能,剩下的20%应该由父组件通过槽来解决。

<!-- 子组件 表格操作列 并不能确定表格是否有操作列,且也不能确定操作列都有什么按钮 -->
<el-table-column label="操作" v-if="isOperate" min-width="150px">
  <template slot-scope="scope">
    <slot name="operate" :row="scope.row"></slot>
  </template>
</el-table-column>

!-- 父组件 填充表格操作列 -->
<common-table :tableData="tableData" :tableOption.sync="tableOption" :isOperate="isOperate">
  <!-- 操作列,填充operate的插槽 -->
  <template slot="operate" slot-scope="scope">
    <!-- 具体要显示的按钮可以在这里自定义 -->
    <el-button type="primary" size="mini">查看</el-button>
  </template>
</common-table>

补充知识点:什么是槽?

插槽是分发内容的套接字。 相当于我在餐厅(子组件)给你占了一个座位,在里面写了operate,然后你就到这里来喝水,如果你是operate,你可以坐这个座位,如果你不是,你可以不要坐这个位置。

简单来说就是将父组件中的内容放到对应的jack的位置

4.不要依赖vuex

如果要提取组件,尽量不要使用vuex来实现参数传递,因为vuex是用来管理组件状态的,虽然可以用来传递参数,而且不推荐,可以选择放在localstorage中,或者通过props等传递。

5.合理使用scope

样式中添加scoped可以让样式只对当前组件有效,盲目使用scoped会造成重复代码,所以需要全局样式,并且在组件中只写该组件的样式,防止重复样式代码。

6. 组件具有单一职责

封装业务组件或者基础组件。 如果你不能给这个组件起一个有意义的名字,就证明这个组件的职责可能不够单一。 你需要不断地提取组件,直到它可以成为一个独立的组件。

包装结果

为了满足项目的需要,对ElementUI表格进行了重新封装,具体链接可以点击:

直通门:ElementUI对桌子的二次包装

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 elementui elementui封装技巧-如何封装Vue组件,你需要了解这个原理! https://www.wkzy.net/game/178417.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务