u-view 的u-calendar 组件设置默认日期后,多次点击后,就不滚动到默认日期的位置

news/2024/7/7 19:59:46

场景:uniapp开发微信小程序  vue2  uview版本:2.0.36 ;  u-calendar 组件设置默认日期后  我打开弹窗,再关闭弹窗, 重复两次  就不显示默认日期了 

在源码中找到这个位置进行打印值,根据出bug前后的值进行分析,发现,获取dom信息时候,获取的height有时候是整数有时候是小数,但是差的不大,应该是dom精度问题,属于正常情况,但是就是这个导致的问题,如果两次获取的height值不一样,就是正常的,如果两次获取的height值一样,那么就会出现这个bug, 这里要提一下,这个获取的height值是在后代组件中获取的,然后传递给祖先组件,在祖先组件中赋值给scroll-view组件的scroll-top属性。所以有个大胆的猜测,两次获取的值一样然后赋值给scroll-view的scroll-top属性,会不会第二次赋值的时候,因为和上次的值一样,进而缓存了,相当于就没有给scroll-view的scroll-top属性赋值上去,相当于没生效。

故改源码,设置一个布尔值,然后在祖先组件拿到后代组件传递上来的这个值的时候,进行动态加减0.0001几乎不印象值,但是可以实现每次值都不一样,最后测试完,发现果然好了。询问了u-view的社区维护人员,被告知是u-view的bug。也没时间追根溯源了。能解决就行。下面具体修改了源码的位置。

 

/uni_modules/uview-ui/components/u-calendar/u-calendar.vue文件下:

 

以下是源码打印日志的文件路径:/uni_modules/uview-ui/components/u-calendar/month.vue

 上图中this.$uGetRect方法定义文件路径:/uni_modules/uview-ui/libs/mixin/mixin.js

 


http://lihuaxi.xjx100.cn/news/1476702.html

相关文章

(未完成)【Spring专题】SringAOP底层原理解析——阶段三(AOP)

目录 前言前置知识代理范式Spring动态代理的实现 课程内容一、动态代理的实现1.1 Cglib动态代理1.2 JDK动态代理1.3 ProxyFactory:Spring对两种代理的封装 二、AOP基础知识2.1 AOP基础概念回顾2.2 SpringAOP实现方式的发展历程 三、底层源码解析3.1 概念回顾3.2 核心…

车载开发——彻底了解CAN总结

CAN总线(Controller Area Network)是一种用于车辆内部通信的串行通信协议。它是一种高速、可靠的通信系统,旨在实现车辆各个部件之间的高效数据传输。CAN总线最初由德国Bosch公司于1983年开发,如今已成为汽车行业中最常用的通信标…

数据库——Redis 常见数据结构以及使用场景分析

文章目录 1. string2. list3. hash4. set5. sorted set 你可以自己本机安装 redis 或者通过 redis 官网提供的在线 redis 环境。 1. string 介绍 :string 数据结构是简单的 key-value 类型。虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字符串…

windows无法与设备或主DNS服务器通信

今天电脑连上wifi后发现qq可以登录,爱奇艺也可以正常使用,但是就浏览器不能用,不管哪个网站都是无法访问,点击下面的Windows网络诊断后发现是因为windows无法与设备或主DNS服务器通信 1.右下角右键wifi图标,打开网络和internet设置 2.点击网络和共享中心 3. 点击更改适配器设置…

【数据库】MySQL存储过程:提升数据库性能和操作效率的利器

在数据库管理系统中,存储过程是一种重要的数据库对象,它允许将一组复杂的SQL语句组合起来,形成一个独立的单元进行重复使用。存储过程可以极大地提高数据库的性能和操作效率,降低网络流量,减轻系统负载。本文将深入探讨…

【git】当git lab或者其他代码管理网站的搜索功能不好用时,可以尝试使用git命令辅助搜索关键字

查询git log具体某条记录的方法 1、将 <关键词> 替换为你想要查询的关键词。这将列出所有提交记录中包含指定关键词的记录&#xff1a; git log --grep<关键词> // 注意<>在实际使用时不必写 2、如果你知道要查询的提交记录的哈希值&#xff08;commit has…

Echarts源码修改、定制编译

1、在线构建 2、自定义修改、构建 1、下载&#xff1a;https://gitee.com/echarts/echarts/tags &#xff0c;比如这里下载5.3.3 2、解压并执行&#xff1a;npm install 3、修改源码&#xff1a;一般修改src文件下面的源码&#xff0c;这里需要执行&#xff1a;npm run releas…

C# 工厂模式

一、概述 工厂模式&#xff08;Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。在C#中&#xff0c;工厂模式通过定义一个公共接口或抽象类来创建对象&#xff0c;而具体的对象创建则由工厂类来实现。 工厂模式主要包含三个角色…