抽屉组件,可从页面不同方向滑出,通常用于展示临时的操作面板或内容区域,支持从顶部、左侧、右侧滑入。点击遮罩层可关闭抽屉。
import CDrawer from '@components/layout/drawer';
show
(Boolean,必选):控制抽屉显示或隐藏,默认值为 falsedirection
(String,可选):抽屉滑出方向,默认值为 'right'top
:从顶部滑出left
:从左侧滑出right
:从右侧滑出onClose
(Function,必选):抽屉关闭时的回调函数,通常用于设置 show 为 false<template>
<view class="page">
<button @tap="evt => openDrawer()">打开抽屉</button>
<CDrawer
:show="drawerVisible"
:onClose="closeDrawer"
>
<view class="drawer-content">
<view class="drawer-title">筛选条件</view>
<view class="drawer-item">选项1</view>
<view class="drawer-item">选项2</view>
<view class="drawer-item">选项3</view>
<button @tap="evt => applyFilter()">确定</button>
</view>
</CDrawer>
</view>
</template>
<script>
import CDrawer from '@components/layout/drawer';
export default {
components: {
CDrawer
},
data() {
return {
drawerVisible: false
}
},
methods: {
openDrawer() {
this.drawerVisible = true;
},
closeDrawer() {
this.drawerVisible = false;
},
applyFilter() {
// 应用筛选逻辑
this.closeDrawer();
}
}
}
</script>
<style>
.drawer-content {
padding: 20px;
}
.drawer-title {
font-size: 18px;
font-weight: bold;
margin-bottom: 20px;
}
.drawer-item {
padding: 10px 0;
}
</style>
<template>
<view class="page">
<button @tap="evt => openDrawer()">打开导航菜单</button>
<CDrawer
:show="drawerVisible"
direction="left"
:onClose="closeDrawer"
>
<view class="menu-content">
<view class="menu-item" @tap="evt => navigateTo('/pages/home/index')">首页</view>
<view class="menu-item" @tap="evt => navigateTo('/pages/order/list')">订单管理</view>
<view class="menu-item" @tap="evt => navigateTo('/pages/user/index')">用户中心</view>
<view class="menu-item" @tap="evt => navigateTo('/pages/setting/index')">系统设置</view>
</view>
</CDrawer>
</view>
</template>
<script>
import CDrawer from '@components/layout/drawer';
import Taro from '@tarojs/taro';
export default {
components: {
CDrawer
},
data() {
return {
drawerVisible: false
}
},
methods: {
openDrawer() {
this.drawerVisible = true;
},
closeDrawer() {
this.drawerVisible = false;
},
navigateTo(url) {
this.closeDrawer();
Taro.navigateTo({ url });
}
}
}
</script>
<template>
<view class="page">
<button @tap="evt => openDrawer()">显示通知</button>
<CDrawer
:show="drawerVisible"
direction="top"
:onClose="closeDrawer"
>
<view class="notification">
<view class="notification-title">系统通知</view>
<view class="notification-content">
您有3条未读消息,请及时查看处理。
</view>
<button @tap="evt => viewMessages()">查看详情</button>
</view>
</CDrawer>
</view>
</template>
<script>
import CDrawer from '@components/layout/drawer';
export default {
components: {
CDrawer
},
data() {
return {
drawerVisible: false
}
},
methods: {
openDrawer() {
this.drawerVisible = true;
},
closeDrawer() {
this.drawerVisible = false;
},
viewMessages() {
this.closeDrawer();
// 跳转到消息页面
}
}
}
</script>