uniapp编译成微信小程序中遇到的兼容性问题

2024-01-22 06:40

本文主要是介绍uniapp编译成微信小程序中遇到的兼容性问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.小程序报错报类似Bad value with message的错误
    • 2.如果后端的接口数据返回null,则微信小程序会渲染成null ;h5端则不会;
    • 3.全局挂在的属性,在模板中不可用;
    • 4.微信小程序报错Converting circular structure to JSON
    • 5.uview不能使用@tap
    • 6.包体积瘦身,单包不能超过2M,总包不能超过20M
    • 7.@tap无法动态传参
    • 8. 无法使用v-on=" l i s t e n e r s " 和 v − b i n d = " listeners"和v-bind=" listeners"vbind="attrs"
    • 9.uniapp动态插槽,小程序不支持动态插槽报错
    • 10 vue3中使用createSelectorQuery.in(this)获取元素的时候报错TypeError: Cannot read property '__route__' of undefined的解决方法
    • 10.uniapp编译到微信小程序 的时候,会多一层以组件命名的标签
    • 11. computed在微信小程序端不管是页面还是组件,默认会自动执行一次,而其它端则无此问题
    • 12在ios真机中如果使用scrollView组件后,子元素如果使用fixed定位的话,此时fixed将会将对于scrollView定位;


1.小程序报错报类似Bad value with message的错误

模板里面如果存在这样的语法,则会报错Bad value with message;然而||''和||[]则不会报错;如下所示;

<u-cell-item :arrow="false" title="报废年限">{{data.scrapYear||{}}}</u-cell-item>

2.如果后端的接口数据返回null,则微信小程序会渲染成null ;h5端则不会;

解决方法:建议java后端加个拦截器统一处理下null

3.全局挂在的属性,在模板中不可用;

建议使用计算属性来访问全局变量;

Vue.prototype.$file = fileUrl

4.微信小程序报错Converting circular structure to JSON

Converting circular structure to JSON    --> starting at object with constructor 'Object'    --- property 'order' closes the circle

原因:排查循环依赖的问题,如下注释的代码即为循环依赖

this.detailData = data.order;//循环引用
// this.detailData.order = data.order;//原来的:循环引用
this.detailData.order =JSON.parse(JSON.stringify(data.order)) ;//修复后的,使用单层深拷贝解决循环引用问题

5.uview不能使用@tap

在这里插入图片描述

6.包体积瘦身,单包不能超过2M,总包不能超过20M

  • uni.scss文件一定不能引用过多的样式,否则所有编译成wxss都将会存在引入的样式,最突出的体积大问题
  • @/static下的静态文件,如果只是分包下用到,也可以放到分包下的static
  • 按照业务分包

7.@tap无法动态传参

如下所示,方法toWorkOrderDetail接受不到order的入参

        <viewclass="card"v-for="order inlist":key="order.id"@tap="toWorkOrderDetail(order)"></view>

解决如下

<view class="card" v-for="order in list" :key="order.id"@click="toWorkOrderDetail($event)" :data-row="order">
</view>
	toWorkOrderDetail(e) {const {id} = e.currentTarget.dataset.rowuni.navigateTo({url: `/******/detail?point_id=${pointId}`,});},

8. 无法使用v-on=“ l i s t e n e r s " 和 v − b i n d = " listeners"和v-bind=" listeners"vbind="attrs”

这个是通病,截至2023年uniapp都不支持该语法,切记封装组件的时候不要使用该语法
鸡肋的是我当时热更新没有问题,第二次运行的时候就提示不支持了,然后回去重头写组件

9.uniapp动态插槽,小程序不支持动态插槽报错

子组件

<template>
<!-- #ifdef MP-WEIXIN -->
<!-- 小程序没有作用域插槽 -->
<slot name="{{item.slot}}" ></slot>
<!-- #ifndef MP-WEIXIN -->
<slot :name="item.slot" :formItem="item"></slot>
<!-- #endif -->
</template>

父组件
切记小程序不要用template,否则渲染不出来

<!-- #ifdef MP-WEIXIN --><view v-slot:deviceNo><u-icon name="scan" size="38" @click="scan"></u-icon></view><!-- #endif --><!-- #ifndef MP-WEIXIN --><template v-slot:deviceNo><u-icon name="scan" size="38" @click="scan"></u-icon></template><!-- #endif -->

10 vue3中使用createSelectorQuery.in(this)获取元素的时候报错TypeError: Cannot read property ‘route’ of undefined的解决方法

此问题只有小程序才会出现,h5不会出现


/*** 获取dom节点的宽高位置信息* 示例:uni.$yw.getDomClientRect('.yw-fixed-button')* @param {选择器字符串} select * @returns */
export function getDomClientRect(select) {return new Promise((resolve, reject) => {const instance = getCurrentInstance()uni.createSelectorQuery().in(instance).select(select).boundingClientRect(res => {resolve(res)}).exec()})
}

10.uniapp编译到微信小程序 的时候,会多一层以组件命名的标签

这是因为自定义组件渲染差异导致,如下为官网说明
在这里插入图片描述
可以配置virtualHost来配置

export default {options: {virtualHost: true,},
}

11. computed在微信小程序端不管是页面还是组件,默认会自动执行一次,而其它端则无此问题

切记多端兼容的时候不要在computed执行数组的push等操作,否则数据会重复;

    /**卡片数组 */const carList = computed(() => {const _tmp = [{ label: '品牌', key: 'modelName', },{ label: '所在仓库', key: 'stashStr' },]/**如果是不是采购的话就加上库存,同时设最大值 *//**注意事项:一定要加上type.value 的判断,不然微信小程序会先会执行2遍,这样就push进去了 *//**因为小程序computed会自动执行一次,然后onLoad里面给type赋值的时候又执行一次,这个是uniapp这个框架一直没有解决的编译BUG */if (type.value && (Number(type.value) != ENUMS.GOODS.APPLY_TYPE.BUY.VALUE)) {_tmp.push({ label: '库存', key: 'inventoryNumber' })maxKey.value = 'inventoryNumber'}return _tmp})

12在ios真机中如果使用scrollView组件后,子元素如果使用fixed定位的话,此时fixed将会将对于scrollView定位;

解决方法:
是因为在ios中会自动加上 -webkit-overflow-scrolling:touch,可在scrollView中的calss中取消掉它

 .uni-scroll-view {-webkit-overflow-scrolling: auto;
}

这篇关于uniapp编译成微信小程序中遇到的兼容性问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/632149

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》 心智程序 大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。 心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati