项目需求:
- 使用uniapp开发微信小程序
- 在uniapp项目中使用小程序ui-vant weapp组件
想要知道如何在uniapp项目中引入使用小程序ui-vant weapp组件,首先得了解如果在uniapp项目中使用小程序组件
uniapp对小程序自定义组件支持
微信小程序组件
需要放在项目特殊文件夹 wxcomponents
。
- HBuilderX 建立的工程 wxcomponents 文件夹在
项目根目录
下。 - vue-cli 建立的工程 wxcomponents 文件夹在
src 目录
下。
使用方式
在 pages.json 对应页面的 style -> usingComponents 引入组件:
{
"pages": [{
"path": "index/index",
"style": {
// #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-QQ
"usingComponents": {
"custom": "/wxcomponents/custom/index"
},
// #endif
"navigationBarTitleText": "uni-app"
}
}]
}
在页面中使用
- 注意数据和事件绑定的差异,组件使用时应按照
vue
的数据和事件绑定方式- 属性绑定从
attr="{{ a }}"
,改为:attr="a"
;从title="复选框{{ item }}"
改为:title="'复选框' + item"
- 事件绑定从
bind:click="toggleActionSheet1"
改为@click="toggleActionSheet1"
,目前支付宝小程序不支持vue
的事件绑定方式,具体参考:支付宝小程序组件事件监听示例 - 阻止事件冒泡 从
catch:tap="xx"
改为@tap.native.stop="xx"
-
wx:if
改为v-if
-
wx:for="{{ list }}" wx:key="{{ index }}"
改为v-for="(item,index) in list"
- 属性绑定从
uniapp官网上有一句话:
当需要在 vue
组件中使用小程序组件时,注意在 pages.json
的 globalStyle
中配置 usingComponents
,而不是页面级配置。
我对这句话的理解是:
- 如果你是在
页面
中使用小程序组件,可以按照上面介绍的方式,在注册此页面的时候,在配置的style.usingComponents对象
中注册页面中要使用的小程序组件 - 如果你是想在
封装的vue组件A
中使用小程序组件,既然A被封装为组件,那就代表它可能在所有的页面或组件中被使用,则A中使用的小程序组件就可能被用在整个项目任何地方,这次就必须全局注册此小程序组件
而我们想在uniapp项目中使用vant weapp微信小程序组件的诉求,其实是想在项目中任何位置都可以使用vant组件,所以我们需要全局注册vant小程序组件
在uniapp项目中全局注册vant微信小程序组件
1.打开vant weapp小程序官网,点击顶部导航右边的git图标,进入在git上的地址
https://vant-contrib.gitee.io/vant-weapp/#/quickstart
https://github.com/youzan/vant-weapp
2.执行下面命令把vant weapp源码下载下来后,
git clone https://github.com/youzan/vant-weapp.git
3.把dist目录下的文件,拷贝到wxcomponents目录下
4.全局注册在uniapp项目中使用到的vant微信小程序组件
{
"pages": [
//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "uni-app"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8",
"usingComponents": {
"van-button": "/wxcomponents/button/index",
"van-field": "/wxcomponents/field/index",
"van-switch": "/wxcomponents/switch/index",
"van-search": "/wxcomponents/search/index",
"van-cell-group": "/wxcomponents/cell-group/index",
"van-cell": "/wxcomponents/cell/index",
"van-radio": "/wxcomponents/radio/index",
"van-radio-group": "/wxcomponents/radio-group/index",
"van-checkbox": "/wxcomponents/checkbox/index",
"van-checkbox-group": "/wxcomponents/checkbox-group/index",
"van-picker": "/wxcomponents/picker/index",
"van-popup": "/wxcomponents/popup/index",
"van-grid": "/wxcomponents/grid/index",
"van-grid-item": "/wxcomponents/grid-item/index",
"van-row": "/wxcomponents/row/index",
"van-col": "/wxcomponents/col/index",
"van-count-down": "/wxcomponents/count-down/index",
"van-icon": "/wxcomponents/icon/index",
"van-tab": "/wxcomponents/tab/index",
"van-tabs": "/wxcomponents/tabs/index",
"van-divider": "/wxcomponents/divider/index",
"van-dialog": "/wxcomponents/dialog/index",
"van-toast": "/wxcomponents/toast/index",
"van-stepper": "/wxcomponents/stepper/index",
"van-slider": "/wxcomponents/slider/index",
"van-tag": "/wxcomponents/tag/index",
"van-loading": "/wxcomponents/loading/index",
"van-overlay": "/wxcomponents/overlay/index",
"van-collapse": "/wxcomponents/collapse/index",
"van-collapse-item": "/wxcomponents/collapse-item/index",
"van-dropdown-item": "/wxcomponents/dropdown-item/index",
"van-dropdown-menu": "/wxcomponents/dropdown-menu/index",
"van-empty": "/wxcomponents/empty/index",
"van-notice-bar": "/wxcomponents/notice-bar/index",
"van-image": "/wxcomponents/image/index",
"van-datetime-picker": "/wxcomponents/datetime-picker/index",
"van-uploader": "/wxcomponents/uploader/index"
}
}
}
并不需要注册所有的,你使用那个组件注册那个就行
5.在App.vue中引入UI样式
6.使用微信小程序组件
名称
联系人
联系方式
联系地址
信用额度
确定
注意事项: