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

相关推荐
真的很上进18 分钟前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
web1309332039824 分钟前
vue elementUI form组件动态添加el-form-item并且动态添加rules必填项校验方法
前端·vue.js·elementui
supermapsupport2 小时前
iClient3D for Cesium在Vue中快速实现场景卷帘
前端·vue.js·3d·cesium·supermap
m0_748254882 小时前
vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
前端·vue.js·elementui
噢,我明白了4 小时前
同源策略:为什么XMLHttpRequest不能跨域请求资源?
javascript·跨域
sanguine__4 小时前
APIs-day2
javascript·css·css3
苹果醋34 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计
关你西红柿子4 小时前
小程序app封装公用顶部筛选区uv-drop-down
前端·javascript·vue.js·小程序·uv
济南小草根4 小时前
把一个Vue项目的页面打包后再另一个项目中使用
前端·javascript·vue.js
小木_.5 小时前
【python 逆向分析某有道翻译】分析有道翻译公开的密文内容,webpack类型,全程扣代码,最后实现接口调用翻译,仅供学习参考
javascript·python·学习·webpack·分享·逆向分析