ant mobile design组件库的PickerView组件不能滑动

news/2025/1/15 21:45:54/

问题

PickerView组件在开发环境可滑动,在测试环境不可滑动

  • 正常开发环境是这样正常显示,并且可滑动的
    在这里插入图片描述

  • 发到测试环境后,变成了这样,并且只有中间那列可滑动,两边的都不能滑动,而且还会报警告
    在这里插入图片描述

  • 封装的组件代码如下

javascript">// 日期选择组件
const CustomDatePickerView: FC<any> = ({customizeTab,setCustomizeTime,customizeTime
}) => {const [value, setValue] = useState<number[]>(transformDateToArray(customizeTime[customizeTab]));const [days, setDays] = useState<any>([]);useEffect(() => {// 在组件加载时设置初始值console.log(111, customizeTime, customizeTab, value[0], value[2]);updateDays(value[0], value[2]); // 设置天数列// sessionStorage.setItem('isFirst', '1');}, []);useEffect(() => {setValue(transformDateToArray(customizeTime[customizeTab]));}, [customizeTab]);const months = [{ label: 'January', value: 0 },{ label: 'February', value: 1 },{ label: 'March', value: 2 },{ label: 'April', value: 3 },{ label: 'May', value: 4 },{ label: 'June', value: 5 },{ label: 'July', value: 6 },{ label: 'August', value: 7 },{ label: 'September', value: 8 },{ label: 'October', value: 9 },{ label: 'November', value: 10 },{ label: 'December', value: 11 }];const years = Array.from({ length: 100 }, (_, i) => ({label: `${dayjs().year() - 50 + i}`,value: dayjs().year() - 50 + i}));const updateDays = (month, year) => {const daysInMonth = dayjs(`${year}-${month + 1}`).daysInMonth();const newDays = Array.from({ length: daysInMonth }, (_, i) => ({label: `${i + 1}`,value: i + 1}));setDays(newDays);};const onChange = debounce(val => {const [selectedMonth, selectedDay, selectedYear] = val;if (selectedMonth !== value[0] || selectedYear !== value[2]) {// 动态更新天数列updateDays(selectedMonth, selectedYear);}// 确保日期选项在天数列更新时不越界const daysInSelectedMonth = dayjs(`${selectedYear}-${selectedMonth + 1}`).daysInMonth();if (selectedDay > daysInSelectedMonth) {val[1] = daysInSelectedMonth;}setValue(val);customizeTime[customizeTab] = transformDate(dayjs(`${selectedYear}-${selectedMonth + 1}-${selectedDay}`));setCustomizeTime([...customizeTime]);// }}, 500);return (<PickerViewclassName="!bg-[#27292F]"columns={[months, days, years]}value={value}onChange={onChange}style={{ '--item-font-size': '20px' }}/>);
};

最终发现可能导致的原因是在本地开发环境会触发两次useEffect,所以传入的columns应该没什么问题,而测试环境是只触发一次,打断点的时候发现days这个值不对
解决办法就是 加了一个days.length 的判断就可以了,

javascript">days.length && (<PickerViewclassName="!bg-[#27292F]"columns={[months, days, years]}value={value}onChange={onChange}style={{ '--item-font-size': '20px' }}/>)

http://www.ppmy.cn/news/1521720.html

相关文章

Qt/C++百度地图/高德地图/天地图/腾讯地图/谷歌地图/加载绘图工具栏

一、前言说明 在地图中提供一个绘图工具栏&#xff0c;可以便捷的在地图上添加各种覆盖物&#xff0c;比如折线、多边形、矩形、圆形等&#xff0c;然后可以获取这些覆盖物的路径以及中心点等属性。这里有几个小插曲&#xff0c;比如百度地图gl版本默认不提供这个功能&#xf…

集成电路学习:什么是IP知识产权

一、IP&#xff1a;知识产权 IP是Intellectual Property的缩写&#xff0c;即知识产权。知识产权是一种无形的财产权&#xff0c;也称智力成果权&#xff0c;它指的是通过智力创造性劳动所获得的成果&#xff0c;并且是由智力劳动者对成果依法享有的专有权利。这种权利包括人身…

遥控器显示分别对应的无人机状态详解!!

1. 电量显示 遥控器电量&#xff1a;遥控器上通常会显示自身的电池电量&#xff0c;以提醒用户及时充电。 无人机电量&#xff1a;部分高端遥控器还会显示无人机的电池电量&#xff0c;以进度条或百分比的形式表示&#xff0c;帮助用户了解无人机的续航能力。 2. 飞行模式与…

vs code中vue常用插件

在VS Code中&#xff0c;Vue开发常用的插件包括但不限于以下几个&#xff0c;这些插件可以极大地提高Vue开发的效率和体验&#xff1a; 1. Vetur 功能&#xff1a;Vetur是VSCode中最受欢迎的Vue插件之一&#xff0c;它提供了语法高亮、智能感知、Emmet、linting/错误检查、格…

python-pdf文件加密和解密

PDF 文件加密需要使用 encrypt 函数&#xff0c;对应的加密代码也比较简单&#xff1a; from PyPDF2 import PdfReader, PdfWriterpdf_path r"D:\自动化\道德经.pdf" sava_path r"D:\自动化\加密后.pdf"pdf_reader PdfReader(pdf_path) pdf_writer P…

《响应式 Web 设计:纯 HTML 和 CSS 的实现技巧》

一、引言 在当今数字化时代&#xff0c;人们使用各种不同的设备访问网页&#xff0c;包括台式电脑、笔记本电脑、平板电脑和智能手机等。为了确保网页在不同设备上都能提供良好的用户体验&#xff0c;响应式 Web 设计变得至关重要。响应式 Web 设计是一种能够根据设备屏幕大小和…

pytorch pyro 贝叶斯神经网络 bnn beyesean neure network svi ​定制SVI目标和培训循环,变更推理

定制SVI目标和培训循环 Pyro支持各种基于优化的贝叶斯推理方法&#xff0c;包括Trace_ELBO作为SVI(随机变分推理)的基本实现。参见文件&#xff08;documents的简写&#xff09;有关各种SVI实现和SVI教程的更多信息I, 二&#xff0c;以及罗马数字3了解SVI的背景。 在本教程中…

可交互、会学习、自成长机器人——李德毅院士

在以“农业无人农场”为主题的中国工程科技论坛上&#xff0c;中国工程院院士、欧亚科学院院士、中国人工智能学会和中国指挥与控制学会名誉理事长&#xff0c;中科原动力首席科学家李德毅院士应邀做题为《机器具身交互智能》的演讲。李德毅院士表示&#xff0c;智能机器不但把…