uniapp项目中使用vue3和小程序组件父子通信

uniapp官方文档地址:https://uniapp.dcloud.net.cn/tutorial/miniprogram-subject.html#%E5%B0%8F%E7%A8%8B%E5%BA%8F%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E6%94%AF%E6%8C%81

注意事项

页面路由中的文件不能引用项目特殊文件夹 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中定义变量传给小程序组件:

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

子组件传递父

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

在父组件中绑定函数:

相关推荐
Knight_AL14 小时前
Vue + Spring Boot 项目添加 /wvp 前缀的完整链路解析(从浏览器到静态资源)
前端·vue.js·spring boot
粟悟饭&龟波功14 小时前
【软考系统架构设计师】九、架构演化与维护
前端·后端·架构·系统架构·软件工程
广州华水科技14 小时前
单北斗GNSS的变形监测应用是什么?主要用于大坝的安全监测吗?
前端
Hao_Harrision14 小时前
50天50个小项目 (React19 + Tailwindcss V4) ✨| AnimatedCountdown(倒计时组件)
前端·typescript·react·tailwindcss·vite7
qq_4061761414 小时前
什么是模块化
开发语言·前端·javascript·ajax·html5
ljh57464911914 小时前
npm run build:prod 打包后,文件中的console.log 失效
前端·npm·node.js
不吃香菜56714 小时前
WebSocket 超细致完整用法讲解(含原理 + 前端 + 后端 + 实战案例 + 避坑)
前端·网络·websocket·网络协议
技术钱14 小时前
vue3 + element plus实现表头拖拽数组进行汇总
前端·javascript·vue.js
柒@宝儿姐14 小时前
vue3中使用element-plus的el-scrollbar实现滚动触底加载更多
前端·javascript·vue.js