【区分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 的官方文档应始终作为最终参考。

相关推荐
天宇&嘘月2 小时前
web第三次作业
前端·javascript·css
laimaxgg2 小时前
Qt常用控件之单选按钮QRadioButton
开发语言·c++·qt·ui·qt5
小王不会写code3 小时前
axios
前端·javascript·axios
发呆的薇薇°4 小时前
vue3 配置@根路径
前端·vue.js
luoluoal4 小时前
基于Spring Boot+Vue的宠物服务管理系统(源码+文档)
vue.js·spring boot·宠物
luckyext4 小时前
HBuilderX中,VUE生成随机数字,vue调用随机数函数
前端·javascript·vue.js·微信小程序·小程序
小小码农(找工作版)4 小时前
JavaScript 前端面试 4(作用域链、this)
前端·javascript·面试
鱼樱前端5 小时前
深入JavaScript引擎与模块加载机制:从V8原理到模块化实战
前端·javascript
yangjiajia1234566 小时前
vue3 ref和reactive的区别
前端·javascript·vue.js