
注意事项
页面路由中的文件不能引用项目特殊文件夹 wxcomponents(或 mycomponents、swancomponents)下的 js 文件,否则这些文件会被编译。
小程序组件需要放在项目特殊文件夹 wxcomponents(或 mycomponents、swancomponents)。HBuilderX 建立的工程 wxcomponents 文件夹在 项目根目录下。vue-cli 建立的工程 wxcomponents 文件夹在 src 目录下。可以在 vue.config.js 中自定义其他目录
小程序组件的性能,不如 vue 组件。使用小程序组件,需要自己手动 setData,很难自动管理差量数据更新。而使用 vue 组件会自动 diff 更新差量数据。所以如无明显必要,建议使用 vue 组件而不是小程序组件。比如某些小程序 ui 组件,完全可以用更高性能的 uni ui 替代。
当需要在 vue 组件中使用小程序组件时,注意在 pages.json 的 globalStyle 中配置 usingComponents,而不是页面级配置。
注意数据和事件绑定的差异,组件使用时应按照 vue 的数据和事件绑定方式
属性绑定从 attr="",改为 :attr="a";从 title="复选框" 改为 :title="'复选框' + item"
事件绑定从 bind:click="toggleActionSheet1" 改为 @click="toggleActionSheet1",目前支付宝小程序不支持 vue 的事件绑定方式,具体参考:支付宝小程序组件事件监听示例
阻止事件冒泡 从 catch:tap="xx" 改为 @tap.native.stop="xx"
wx:if 改为 v-if
wx:for="" wx:key="" 改为v-for="(item,index) in list"
详细的小程序转 uni-app 语法差异可参考文档https://ask.dcloud.net.cn/article/35786。
父传子示例
在unipp的vue3项目中创建了一个微信小程序原生的组件,并将其引入到vue3中使用:

在小程序组件中定义传递的数据类型:

然后在vue3中定义变量传给小程序组件:

子组件就可以获取这个数据了:打印出来的数据正常

子组件传递父
在子组件中触发事件,并传递数据:

在父组件中绑定函数:
