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

news2024/11/15 10:28:38

问题

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

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

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

  • 封装的组件代码如下

// 日期选择组件
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 (
      <PickerView
        className="!bg-[#27292F]"
        columns={[months, days, years]}
        value={value}
        onChange={onChange}
        style={{ '--item-font-size': '20px' }}
      />
  );
};

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

修改服务器DNS解析及修改自动对时时区

修改服务器DNS解析&#xff1a; 1、搜索一下当地的DNS服务器的地址 2、登录服务器&#xff0c;执行 vim /etc/resolv.conf文件&#xff0c;在nameserver字段后填写DNS服务的地址 3、chattr i /etc/resolv.conf 加上不可修改权限&#xff0c;防止重启DNS被修改 修改自动对时…

jmeter压力测试,通过LLM利用RAG实现知识库问答,NEO4J部署,GraphRAG以知识图谱在查询时增强提示实现更准确的知识库问答(9/7)

前言 这周也是杂七杂八的一天&#xff08;高情商&#xff1a;我是一块砖&#xff0c;哪里需要往哪里搬&#xff09;&#xff0c;首先是接触了jemter这个压力测试工具&#xff0c;然后帮公司的AIGC项目编写使用手册和问答手册的第一版&#xff0c;并通过这个平台的智能体实现知识…

【LabVIEW学习篇 - 16】:文件操作

文章目录 CSV文件CSV写入CSV读取 TXT文件txt写入txt读取 INI文件INI文件写入INI文件读取 CSV文件 .csv (Comma-Separated Values&#xff09;是逗号分隔值文件格式&#xff0c;有时也称之为字符分隔值&#xff0c;因为分隔符也可以不是逗号(最常见的是逗号和制表符)&#xff0…

Spring01——Spring简介、Spring Framework架构、Spring核心概念、IOC入门案例、DI入门案例

为什么要学 spring技术是JavaEE开发必备技能&#xff0c;企业开发技术选型命中率>90%专业角度 简化开发&#xff1a;降低企业开发的复杂度框架整合&#xff1a;高效整合其他技术&#xff0c;提高开发与运行效率 学什么 简化开发 IOCAOP 事务处理 框架整合 MyBatis 怎…

mybatis特殊符号处理,mybatis一级二级缓存,java反射机制

mybatis特殊符号处理 在 mybatis 中的 xml 文件中&#xff0c;存在一些特殊的符号&#xff0c;比如&#xff1a;<、>、"、&、<>等&#xff0c;正常书写 mybatis 会报错&#xff0c;需要对这些符号进行转义。具体转义如下所示&#xff1a; 特殊字符 转义字…

Openharmony软件评估指南-米尔瑞芯微RK3568开发板

Openharmony软件评估指南用于介绍在米尔的开发板上运行Openharmony系统下的核心资源与外设资源的测试步骤与评估方法。本文可作为前期评估指南使用&#xff0c;也可以作为通用系统开发的测试指导书使用。 本文档使用于米尔电子的MYD-LR3568系列板卡&#xff0c;该板卡是米尔电…

HCIE云计算--灾备

7、BCManager ebackup–云场景备份管理软件 8、ebackup软件的组成 9、ebackup的部署方式 10、ebackup的网络平面 11、组网方式 12、CBT技术–实现增量备份、差异备份、增量恢复 13、CBT和快照对比技术CBT 灾备释义&#xff1a;指利用科学的技术手段和方法&#xff0c;提前…

【鸿蒙HarmonyOS NEXT】调用后台接口及List组件渲染

【鸿蒙HarmonyOS NEXT】调用后台接口及List组件渲染 一、环境说明二、调用后台接口及List组件渲染三、总结 一、环境说明 DevEco Studio 版本&#xff1a; API版本&#xff1a;以12为主 二、调用后台接口及List组件渲染 后台接口及返回数据分析 JSON数据格式如下&#xf…

2024最新技术!使用Golang Beego开发的社区老人健康管理系统,Vue前端交互流畅,大数据分析助力健康趋势预测

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

用PG Back Web轻松进行PostgreSQL备份

什么是 PG Back Web &#xff1f; PG Back Web &#x1f418; 使用用户友好的 Web 界面轻松进行 PostgreSQL 备份&#xff01;&#x1f310;&#x1f4be;。PG Back Web 不仅仅是另一个备份工具。借助 PG Back Web&#xff0c;用户可以通过受 PGP 加密保护的直观 Web 界面轻松安…

JAVA—网络通信

本文是学习网络通信入门和简单了解UDP协议和TCP协议&#xff0c;学习和了解CS架构和简单了解BS架构和HTTP协议&#xff08;部分图片来自黑马程序员&#xff09; 目录 1.网络通信三要素 &#xff08;1&#xff09;IP地址 &#xff08;2&#xff09;端口号 &#xff08;3&am…

RHCE必过技巧,无需本人参加也可拿证?

RHCE(无需本人参加&#xff0c;给信息给款即可拿证) ​培训&#xff0b;认证 ​月初一期 ​月尾一期

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶…

生命科学、食品科学信息类综合全文数据库

一、Nature系列资源 《Nature》杂志1869年创刊于英国&#xff0c;是最早的国际性科技期刊&#xff0c;其办刊宗旨是“将科学发现的重要结果介绍给公众&#xff0c;让公众尽早知道全世界自然知识的每一分支中取得的所有进展”。它报道和评论全球科技领域里最重要的突破&#xf…

【2024全国大学生数学建模竞赛】B题 模型建立与求解(含代码与论文)

目录 1问题重述1.1问题背景1.2研究意义1.3具体问题 2总体分析3模型假设4符号说明&#xff08;等四问全部更新完再写&#xff09;5模型的建立与求解5.1问题一模型的建立与求解5.1.1问题的具体分析5.1.2模型的准备 目前B题第一问的详细求解过程以及对应论文部分已经完成&#xff…

python_使用tkinter建立一个页面的模板

python_使用tkinter建立一个页面的模板 效果如图&#xff0c; 代码如下 """ python设计一下tkinter的布局在最上面排列5个按钮&#xff0c;然后一排4个水平分布的按钮,下面分左右两个图像显示&#xff0c;默认为白色背景为了实现您所描述的Tkinter布局&…

计组 2.Linux上程序的编写与调试

1. 我们之间使用vim创建.c文件&#xff0c;在里面编写完成后按住esc后冒号加wq保存退出 再使用gcc编译.c文件即可 vim test.c gcc test.c2. 这道题对比上一道题多出了编译过程&#xff0c;我们只需要按要求编译即可 gcc -E hello.c -o hello.i # 预处理阶段 gcc -S hello.i…

【超详细】windows Docker安装

关于 Docker 可以把应用以及其依赖都打包到一个容器中&#xff0c;而这个容器的性能开销极低。 Docker 并非是一个通用的容器工具&#xff0c;它依赖于已存在并运行的 Linux 内核环境。Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式&#xff0c…

opencv实战项目二十一:MediaPipe人体姿态检测

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、MediaPipe是什么&#xff1f;二、MediaPipe使用&#xff1a;三、算法流程&#xff1a;四、效果&#xff1a; 前言 在智能科技不断渗透我们日常生活的今天&…

redis分布式锁和lua脚本

业务场景&#xff1a;多个线程对共同资源的访问&#xff1a;库存超卖/用户重复下单的原因 解决方法一&#xff1a;利用jvm内置锁&#xff0c;将非原子性操作变成原子性操作 Synchronized锁的是对象&#xff0c;对象必须是单例的。锁的是this,代表当前所在的类&#xff0c;这个…