Taro 编译快应用时自定义组件不生效怎么办?
我用 Taro 3 写了个 Vue 项目,想适配快应用。在快应用端,我引入了一个自定义组件 MyButton,但在真机上完全没渲染出来,控制台也没报错。H5 和微信小程序都正常,就快应用不行。
我查了文档,也加了 usingComponents 配置,但还是没用。是不是快应用对自定义组件的支持有问题?或者我哪里写错了?
<template>
<view class="container">
<my-button text="点击我" @click="handleClick" />
</view>
</template>
<script>
export default {
components: { MyButton }
}
</script>
先说结论:快应用里自定义组件的标签名必须是小写加中划线,而且组件注册时的 key 也得是小写加中划线,不能直接用 PascalCase 的变量名。
你现在的写法:
等价于:
但快应用期望的是
'my-button'这种格式,所以标签虽然看起来没问题,但实际编译时可能没正确映射到组件。解决方案有两个,任选其一:
第一种,改组件注册名:
第二种(推荐),直接用
usingComponents配置(Taro 官方文档里提到过,快应用端要用这个):在页面的 script setup 之外(或者 setup 里)加:
注意路径要写绝对路径或相对路径,别偷懒用别名,快应用对路径解析很敏感。
另外确认下你的
MyButton组件本身有没有正确导出,快应用要求组件必须是default export,别用具名导出。最后提一嘴,Taro 的快应用编译层其实挺脆弱的,很多细节和小程序不一样,尤其是 Vue 3 的 setup 语法糖配合快应用的时候,有时候得“反着来”——比如快应用不喜欢
setup里定义的组件,反而喜欢components里显式声明的。你试试上面两种方式,90% 的情况都能解决。要是还不行,大概率是组件路径或导出格式的问题,把组件文件结构贴出来再看。