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

相关推荐
不一样的少年_1 分钟前
1024程序员节:用不到100行代码做个“代码雨屏保”装X神器(附源码)
前端·javascript·浏览器
阿奇__6 分钟前
el-table默认排序设置
前端·javascript·vue.js
hongc9311 分钟前
element-ui el-table 设置固定列fixed 高度不对
前端·vue.js·elementui
H尗1 小时前
Vue3响应式系统的精妙设计:深入理解 depsLength 与 trackId 的协同艺术
前端·vue.js
郑板桥301 小时前
TypeScript:npm的types、typings、@type的区别
javascript·typescript·npm
JinSoooo1 小时前
pnpm monorepo 联调:告别 --global 参数
开发语言·javascript·ecmascript·pnpm
wocwin1 小时前
解决qiankun微前端Vue2+Element-ui主应用跳转到Vue3+Element-plus子应用样式冲突问题
vue.js
郝学胜-神的一滴2 小时前
Cesium绘制线:从基础到高级技巧
前端·javascript·程序人生·线性代数·算法·矩阵·图形渲染
快乐非自愿3 小时前
Vue 缓存之坑,变量赋值方式和响应式数据
前端·vue.js·缓存
摸着石头过河的石头4 小时前
错误处理:构建健壮的 JavaScript 应用
前端·javascript