【区分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 小时前
CryptoJS:数据安全的JavaScript加密利器
前端·vue.js·node.js
熊猫_豆豆2 小时前
一个模拟四轴飞行器在随机气流扰动下悬停飞行的交互式3D仿真网页,包含飞行器建模与PID控制算法
javascript·3d·html·四轴无人机模拟飞行
来恩10033 小时前
jQuery选择器
前端·javascript·jquery
前端繁华如梦3 小时前
树上挂苹果还是挂玻璃球?Three.js 程序化果实的完整实现指南
前端·javascript
CDwenhuohuo4 小时前
优惠券组件直接用 uview plus
前端·javascript·vue.js
川冰ICE5 小时前
TypeScript装饰器与元编程实战
前端·javascript·typescript
AI砖家5 小时前
Vue3组件传参大全,各种传参方式的对比
前端·javascript·vue.js
希望永不加班5 小时前
var局部变量类型推断的利弊
java·服务器·前端·javascript·html
threelab5 小时前
Three.js 3D 地图可视化 | 三维可视化 / AI 提示词
前端·javascript·人工智能·3d·着色器
爱怪笑的小杰杰5 小时前
Leaflet 高性能大数据量图圆:彻底解决缩放/拖拽偏移问题
大数据·前端·vue.js·贴图