小程序 自定义组件封装相关问题?
我目前有一个demo页面, 点击按钮, 实现简单的抽屉功能
现在需要做成组件, 方便其他地方调用, 应该如何实现?
drawer.wxml
<view class="wrapper">
<view class="container">
<button type="primary" bindtap="onOpenDrawerTap">Open Drawer</button>
</view>
<block wx:if="{{ showDrawer }}">
<view class="mask" bindtap="onMaskTap">
<!-- 遮罩层 -->
</view>
<view class="drawer">
这里是抽屉内容
</view>
</block>
</view>
drawer.wxss
.mask {
height: 100vh;
width: 100vw;
position: fixed;
left: 0;
top: 0;
z-index: 0;
background-color: var(--black-25);
}
.drawer {
width: 100%;
position: fixed;
bottom: 0;
z-index: 1;
background-color: var(--white);
}
/* 以下是允许用户自定义的样式 */
.drawer {
height: 500rpx;
padding: 30rpx;
font-size: var(--font-size-3);
font-weight: bold;
}
drawer.js
Page({
data: {
showDrawer: false
},
onOpenDrawerTap() {
this.setData({
showDrawer: true
})
},
onMaskTap() {
this.setData({
showDrawer: false
})
},
onReady() {
wx.setNavigationBarTitle({
title: 'Demo Drawer'
});
}
})
希望实现的大概效果如下
wxml
<!-- 触发器 -->
<button type="primary" drawer-content="#example">Open Drawer</button>
<!-- 抽屉内容, 遮罩层默认封装进组件里面 -->
<wxc-drawer id="example">
<view>这里是抽屉内容</view>
</wxc-drawer>
回复
1个回答

test
2024-07-16
一般来说,都会提前设置好一些方法或者属性,来起到控制抽屉的打开或者关闭,以及一些遮罩层的功能等等。这些可以通过 props
属性的方式传入到自定义组件当中,例如说 <drawer title="标题文本" :mask="true" :open="drawerVisible">
。
然后内容部分,简单的可以也可以通过 props
的形式传入,也可以通过 slot
的方式来插入到你的自定义组件当中。👉 组件 wxml 的 slot | 微信开放文档
当然也可以直接使用一些UI组件库提供的 Popup 或者 Half Screen Dialog 组件。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容