常见问题 FAQ
本节介绍在开发过程当中遇到的部分 常见问题 以及 解决办法
目前支持哪些平台?
目前支持 微信小程序、支付宝小程序、钉钉小程序、H5、APP 等平台。
组件库有没有提供可以单独引入的组件?
目前是没有的,首先在插件市场缺少CI/CD
工具,无法实现自动化发布,维护一套单独引入的组件费时费力,其次组件库提供的安装方式均可以实现按需引入,所以是无需提供单独引入的组件的。
如何开启暗黑模式?
Wot Design Uni
支持深色模式、主题定制等能力,详见ConfigProvider 全局配置组件。
小程序样式隔离
在页面中使用 Wot Design Uni 组件时,可直接在页面的样式文件中覆盖样式
<wd-button type="primary">主要按钮</wd-button>
/* 页面样式 */
:deep(.wd-button) {
color: red !important;
}
为什么在组件中无法覆盖组件库样式?
在自定义组件中使用 Wot Design Uni 组件时,需开启styleIsolation: 'shared'
选项
<wd-button type="primary">主要按钮</wd-button>
<script lang="ts">
export default {
options: {
styleIsolation: 'shared'
}
}
</script>
/* 组件样式 */
:deep(.wd-button) {
color: red !important;
}
什么?还有人想问:这样写还我怎么使用script setup
啊!
简单,这样写两个就行了
<script lang="ts">
export default {
options: {
styleIsolation: 'shared'
}
}
</script>
<script lang="ts" setup>
</script>
小程序使用外部样式类
Wot Design Uni 开放了大量的自定义样式类供开发者使用,具体的样式类名称可查阅对应组件的“外部样式类”部分。需要注意的是普通样式类和自定义样式类的优先级是未定义的,因此使用时请添加!important
以保证外部样式类的优先级。
<wd-button custom-class="custom-button" type="primary">主要按钮</wd-button>
/* 组件样式 */
:deep(.custom-button) {
color: red !important;
}
小程序自定义组件渲染问题
微信/QQ/百度/抖音这四家小程序,自定义组件在渲染时会比 App/H5 端多一级节点,下面以divider
组件举例:
<!-- 使用 -->
<wd-divider></wd-divider>
<!-- h5渲染 -->
<view class="wd-divider"></view>
<!-- 微信小程序渲染 -->
<wd-divider>
<view class="wd-divider"></view>
</wd-divider>
解决办法
在微信端可以使用virtualHost解决,virtualHost
设为true
之后会将自定义节点设置成虚拟的,更加接近 Vue 组件的表现,可以去掉微信小程序自定义组件多出的最外层标签,启用后还可以通过 mergeVirtualHostAttributes 合并合并组件虚拟节点外层属性。
// vue2使用virtualHost
export default {
data() {
return {}
},
options: {
virtualHost: true
}
}
// vue3 script setup 使用virtualHost
<script lang="ts">
export default {
// 将自定义节点设置成虚拟的,更加接近Vue组件的表现,可以去掉微信小程序自定义组件多出的最外层标签
options: {
virtualHost: true
}
}
</script>
<script lang="ts" setup>
</script>
启用 virtualHost 效果
这里我们还是以divider
组件举例:
<!-- 使用 -->
<wd-divider></wd-divider>
<!-- h5渲染 -->
<view class="wd-divider"></view>
<!-- 微信小程序渲染 -->
<view class="wd-divider"></view>
如何定制主题?
我们为每个组件提供了css 变量
,可以参考config-provider组件的使用介绍来定制主题。
Toast 和 MessageBox 组件调用无效果?
首先要检查一下用法是否正确,uni-app
平台不支持全局挂载组件,所以Message
、Toast
等组件仍需在 SFC 中显式使用,例如:
<wd-toast></wd-toast>
Message
、Toast
的函数式调用是基于provide/inject
实现的,所以你的调用要确保在setup
中。
编译到支付宝小程序 Popup 组件的遮罩无法显示?
uni-app 3.99.2023122704 将支付宝小程序的styleIsolation
默认值设置为了apply-shared
,而支付宝小程序默认的styleIsolation
为shared
,所以导致更新到3.99.2023122704
版本后,支付宝小程序自定义组件样式穿透无法生效,参见issue。 解决办法:在mainfest.json
中设置styleIsolation
为shared
。
{
// ...
"mp-alipay": {
// ...
"styleIsolation": "shared"
// ...
}
// ...
}
为什么组件库文档中都是从@/uni_modules/wot-design-uni
导入方法和工具类?
当前组件库本身的开发方式是将组件库代码放到@/uni_modules/wot-design-uni
这个目录的,所以文档中都是从@/uni_modules/wot-design-uni
导入方法和工具类,使用npm
方式安装组件库的时候可以这样调整:
// useToast、useNotify等同理
import { useMessage } from '@/uni_modules/wot-design-uni'
替换为
import { useMessage } from 'wot-design-uni'
如何快速解决你的问题?
提问的智慧,可以帮助你快速提出正确的问题,获得更快的解答。
关于我们
如果您的问题不在上述列表中或您有更好的建议,请联系我们 Moonofweisheng