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中定义变量传给小程序组件:

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

子组件传递父

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

在父组件中绑定函数:

相关推荐
后台开发者Ethan1 小时前
setState组件更新
前端·javascript·react
谙忆10241 小时前
大文件上传实战:前端分片、断点续传、秒传与并发控制怎么落地
前端
轻动琴弦1 小时前
VoltTool —— 一站式在线开发者工具平台,69+实用工具免费使用
前端·chrome
就叫飞六吧1 小时前
不同站点iframe嵌套种cookie、localstorege.set() 关系
前端
星栈2 小时前
LiveView 怎么测:从组件测试到端到端,我终于不再只敢手点页面了
前端·前端框架·elixir
宠友信息2 小时前
Spring Boot与异步审核构建仿小红书源码内容发布全流程
java·数据库·spring boot·redis·mysql·oracle·uni-app
蜡台2 小时前
uniapp vue2 转 vue3
前端·javascript·uni-app·vue3·vue2
Web4Browser2 小时前
Headless 浏览器自动化适合哪些任务?巡检、截图和提交动作要分级
运维·前端·自动化
用户059540174462 小时前
把前端内存泄漏排查从2小时压到5分钟,我们把它集成进了CI
前端·css
IMPYLH2 小时前
HTML 的 <dd> 元素
前端·html