【区分vue2和vue3下的element UI Collapse 折叠面板组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Vue 2 中,我们通常使用 Element UI,而在 Vue 3 中,我们则使用 Element Plus 来获得类似的组件库功能。对于 Collapse 折叠面板组件,这两个库提供了相似的接口,但具体属性、事件和方法可能略有不同。以下将分别介绍 Vue 2 下的 Element UI Collapse 和 Vue 3 下的 Element Plus Collapse 的属性、事件和方法,并给出示例。

Vue 2 + Element UI Collapse

属性(Props)
  • value / v-model: 绑定值,当前激活的面板的 name,可以使用 v-model 双向绑定。
  • accordion: 是否手风琴模式,即是否只允许同时展开一个面板。
事件(Events)
  • change: 当前激活面板改变时触发,返回当前激活的面板的 name 和 index。
方法(通常不直接暴露,但可通过 $refs 访问内部方法,但 Element UI Collapse 通常不提供直接的方法)

Element UI 的 Collapse 组件通常不直接暴露方法供外部调用。

示例
vue 复制代码
<template>
  <el-collapse v-model="activeNames" @change="handleChange">
    <el-collapse-item title="一致性" name="1">
      <p>与用户的认知和操作习惯保持一致,尽量符合用户预期。</p>
    </el-collapse-item>
    <el-collapse-item title="反馈" name="2">
      <p>控制反馈,给用户清晰、即时的反馈。</p>
    </el-collapse-item>
    <!-- 更多面板 -->
  </el-collapse>
</template>

<script>
export default {
  data() {
    return {
      activeNames: ['1'], // 默认展开第一个面板
    };
  },
  methods: {
    handleChange(val) {
      console.log(val); // 当前展开的面板的 name 数组
    },
  },
};
</script>

Vue 3 + Element Plus Collapse

属性(Props)
  • model-value / v-model: 绑定值,当前激活的面板的 key,可以使用 v-model 双向绑定。
  • accordion: 是否手风琴模式,即是否只允许同时展开一个面板。
  • border: 是否显示外边框。
事件(Events)
  • update:model-value@change(使用 .sync 修饰符时): 当前激活面板改变时触发,返回当前激活的面板的 key 和 index。
方法(通常不直接暴露)

Element Plus 的 Collapse 组件同样通常不直接暴露方法供外部调用。

示例
vue 复制代码
<template>
  <el-collapse v-model="activeKey" @change="handleChange">
    <el-collapse-item title="一致性" name="1">
      <p>与用户的认知和操作习惯保持一致,尽量符合用户预期。</p>
    </el-collapse-item>
    <el-collapse-item title="反馈" name="2">
      <p>控制反馈,给用户清晰、即时的反馈。</p>
    </el-collapse-item>
    <!-- 更多面板 -->
  </el-collapse>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const activeKey = ref('1'); // 默认展开第一个面板

    function handleChange(val) {
      console.log(val); // 当前展开的面板的 key
    }

    return {
      activeKey,
      handleChange,
    };
  },
};
</script>

注意:在 Vue 3 和 Element Plus 中,我们使用了 Composition API (refsetup 函数) 来定义响应式数据和函数。然而,对于简单的用例,你仍然可以使用 Vue 3 的 Options API(类似于 Vue 2 的方式),这取决于你的个人偏好和项目需求。

此外,Element Plus 的 v-model 绑定属性在 Vue 3 中被重命名为 model-value 以符合 Vue 3 的响应式系统变化,但通常你仍然可以直接使用 v-model 并让 Vue 自动处理这一转换。如果你想要显式监听 model-value 的变化,可以使用 @update:model-value 事件,但在大多数情况下,简单地使用 @change 就足够了,因为 Element Plus 组件通常会为 v-model 绑定提供一个名为 change 的事件来通知变化。然而,请注意,Element Plus 的官方文档应始终作为最终参考。

相关推荐
禁止摆烂_才浅8 小时前
JavaScript 类型判断:instanceof 与 constructor 原理深度解析
前端·javascript·面试
Asize9 小时前
HTTP 明明无状态,登录态怎么就保住了——React + Zustand + JWT 鉴权全流程拆解
前端·javascript
MacroZheng9 小时前
腾讯又开源了一个新项目,用起来真优雅!
前端·vue.js·人工智能
爱酱丶10 小时前
VS Code 快速生成Vue3 + TypeScript + Setup 基础空模板
前端·javascript·typescript
Maxkim10 小时前
在 GitHub 仓库里配一个 AI Code Reviewer,自动审查 PR
前端·javascript
NeverSettle_10 小时前
Agent 如何快速调用公司接口?——CLI + Skill 实践与踩坑
前端·javascript·后端
sugar__salt10 小时前
三列布局与 TypeScript 工具类型 Pick / Omit / Partial 详解
前端·javascript·typescript
名字还没想好☜10 小时前
Next.js Route Handler 做 SSE 服务端推送:实时进度条、自动重连与什么时候别用 WebSocket
开发语言·javascript·websocket·react·sse·next.js
IMPYLH10 小时前
HTML 的 <html> 元素
前端·javascript·html
山川志~11 小时前
Vue + Element UI 实战:如何实现表格时间、金额字段排序
vue.js·ui·elementui