工作学习笔记 —— 支持手机端的添加表单行操作

一、工作需求

当前项目的多维表单功能中,已经支持了手机端的使用,但是部分界面还需要进行优化,优化方向是更加适应手机端的一些操作,而今天的任务之一就是我需要仿照飞书的多维表格的手机端操作中,添加一行记录时,与PC端不同,额外多出一个页面来让用户填写数据,然后确认是否添加

类似这样一个效果,然后在开发过程中,不能影响PC端的功能,确保只有手机端有这个内容,并且该页面要兼容所有的字段显示。

二、AI提问复盘


  • 思考
    • 首先我其实并不清楚手机端和PC端的开发和区别,这里面是完全不懂的,基于这个任务目标,做的同时我需要向AI明确一些信息,了解手机端开发和PC端的区别
  • 提问
    • 现在我需要做一个手机端的网页,当前项目应该是已经支持手机端的网页版了,但是我没有相关的开发经验,你可以和我简单说一下,要怎么做到在PC端和手机端在前端上的操作不同吗?从AI开发的角度,不追究实际代码怎么写,和我介绍底层的逻辑和一些相关的技术即可,如果不是很多,可以不需要生成文档
  • 回答
    • 响应式设计
      • 基于屏幕尺寸动态调整布局和交互,而非为不同设备写两套代码
      • CSS媒体查询(MediaQueries)
        • CSS根据屏幕宽度应用不同样式
        • JavaScript Hook检测
        • 设备类型检测
    • 断点检测
      • 通过CSSMediaQueries或JavaScript检测屏幕宽度,在不同断点应用不同样式和行为
    • 当前项目的现有实现
      • useMediaQuery.ts : 提供了断点检测Hook
      • device.utils.ts:设备类型检测工具
      • sidebarLayout:响应式布局组件
      • 当前项目通过CSS媒体查询控制样式,用JavaScriptHook控制逻辑,根据屏幕尺寸和设备类型动态调整UI和交互,实现一套代码适配多端。
  • 思考
    • 根据AI的回答来看,当前项目是通过对屏幕尺寸的检测和设备类型检测去实现不同的前端UI交互,我再简单确认一下我的理解和想法,简单看看实现细节以后,我可以开始设计手机端的UI界面

  • 提问
    • 按照我的理解的话,当前项目是通过检查设备类型去实现了在不同设备下可能有不同的UI交互是这样吗,你确认一下这个逻辑,例如在表单模块中,在手机端会多出一个加号悬浮标,这个悬浮标目前的功能就是给表单添加新的一行记录,而在PC端是没有的,你简单和我说一下这个的实现逻辑
  • 回答
    • 首先AI否定了我的部分结论,该实现不是通过对设备检测实现的,而是通过对屏幕宽度大小检测去实现的
      • 当屏幕宽度>=768px时隐藏元素,<768px时显示(移动端)
    • 项目通过 CSS 响应式设计实现移动端与 PC 端的 UI 差异,而不是通过设备类型检测。md:hidden 会根据屏幕宽度自动显示/隐藏元素,无需 JavaScript 判断设备类型。这是更现代、更高效的做法。
  • 思考
    • 这种设计思路在我的"感觉"来说,原以为是一种"粗糙"的设计理念,但是居然是更加现代高效的做法,我想进一步了解更多相关的内容,以及一般常见的做法标准。

  • 提问

    • 这种通过对屏幕大小尺寸的检测去判断设备类型的方式是简单高效常见做法吗?有没有统一或者常见的规范标准?以当前项目的768px为例子,这个768px是一个规范的数值吗,当我用一般大小的平板打开时是否会看到这个悬浮按钮,这样做的优势和劣势是什么?
  • 回答

    • 这种方法简单高效,浏览器原生支持且性能好
    • 窗口大小改变时自动适配
    复制代码
      Tailwind CSS默认断点
      sm:  640px   (小屏手机横屏)
      md:  768px   (平板竖屏)
      lg:  1024px  (平板横屏/小笔记本)
      xl:  1280px  (桌面)
      2xl: 1536px  (大屏桌面)
  • 思考

    • 现在我大概理解了一半如何区分手机端和PC端不同的UI操作,结合当下我们要完成的任务,首先这个添加行记录的悬浮框是在PC端隐藏的,我们现在要做的是,点击这个悬浮框后出现一个新的页面或者模态框,效果上在手机端是一种覆盖整个屏幕的一个可以输入行记录的页面,我先需要确定这种是模态框还是页面还是其他什么,然后对该页面进行UI设计和功能描述,参考飞书的多维表格的app端

  • 测试
    • 经过调查发现,当前项目中点击卡片的详情提供的页面就可以作为新建一页的页面来使用,现在区别是我需要添加一个提交的按钮,且该页面如果不提交是不会生成一行新纪录的
  • 提问
    • 我当前需要把表单页面手机端的加号悬浮按钮点击后直接创建一个新的行记录的逻辑修改一下,我需要达到以下效果:
      点击后进入一个根据当前表单字段的页面,就和普通空白行的卡片点击详情后进入的页面几乎可以一样,允许用户进行编辑对应字段的内容,然后唯一不同的是,首先在右下角我希望有按钮"添加"和"取消",当我没有点击"添加"按钮之前,我的表单是不会实际添加行记录的,这和现在的逻辑不同,现在的逻辑是点击后立刻生成一个新的行记录,我需要改成让用户在这个页面可以先输入编辑,然后点击添加,再生成新的行记录,并且是有用户在这个页面编辑的内容的,我要达到以上的效果,你先帮我设计一下要怎么开发,并且我需要和你确认几个事情:
      1. 我需要点击后出现的那个页面本质是模态框,还是抽屉,还是页面,参考点击卡片详情后弹出来的那个可编辑的页面,在手机上看到是覆盖整个浏览器的
      2. 其实这个改动就是优化用户体验,原先是点击加号悬浮按钮后添加新的一行,然后需要用户找到新的一行位置去点击查看详情,然后再进行编辑,我们这个改动就是把编辑的动作放到了添加新行记录的时候,那么那个点击详情进入的页面可以直接复用吗,还是需要重新写一份差不多的,因为还需要有添加的按钮,和之前逻辑不同,点击加号悬浮按钮不能直接添加新的行记录
      3. 这个实现过程需要刻意注意做的逻辑只在手机端,对PC端不要产生影响吗,因为按照前面的理解,我手机端才看得到那个悬浮按钮,PC是看不到的,需要刻意注意一些细节不影响PC吗
  • 回答
    • 首先AI告诉我,这个详情页是一种DataRowDrawer 组件,且设置 width="100%"
    • 然后是复用组件的前提,需要添加"创建模式"支持
      • 添加 mode?: 'create' | 'edit' 属性
      • 创建模式下:显示"添加"和"取消"按钮,隐藏"保存"按钮
      • 创建模式下:不显示"历史"标签页(因为没有记录ID)
      • 创建模式下:使用 createNewRowData 生成初始空数据
    • 不需要刻意区分PC端影响,除非该悬浮按钮在PC端也考虑使用,则需要思考兼容问题
  • 思考
    • 确认好实现的思路没有问题后,就可以让AI帮助我们完成具体的开发了,然后再继续测试即可

三、学习收获清单

1. 手机端和PC端的网页开发思路

  • 响应式设计:一套代码适配多端,通过CSS媒体查询和JavaScript Hook动态调整
  • 移动优先:先设计移动端,再用断点扩展PC端功能
  • 断点标准:Tailwind CSS的断点体系(sm/md/lg/xl)是行业常见标准

2. 响应式设计的核心原理

  • CSS媒体查询:纯CSS控制显示/隐藏,性能好,无需JS执行
  • JavaScript Hook:用于复杂逻辑判断和条件渲染
  • 屏幕尺寸检测 vs 设备类型检测:前者更现代高效,后者可能误判

3. 组件复用设计模式

  • 模式参数化:通过 mode 属性区分不同场景(create/edit)
  • 条件渲染:根据模式显示/隐藏不同UI元素
  • 状态管理:创建模式下延迟保存,编辑模式下即时保存

4. 用户体验优化思路

  • 操作流程优化:将"创建→查找→编辑"简化为"创建→编辑→确认"
  • 移动端交互:全屏页面更适合移动端操作,抽屉更适合PC端
  • 反馈机制:创建成功后跳转到列表页,让用户看到新记录

5. 代码质量保证

  • 向后兼容:新功能不影响现有PC端逻辑
  • 类型安全:TypeScript确保接口一致性
  • 代码复用:最大化组件复用,减少重复代码
相关推荐
xiangshi_yan2 小时前
内核学习之路【4/100】-io
学习
am心3 小时前
学习笔记-小程序-导入商品浏览功能实现
笔记·学习
布谷歌3 小时前
开发笔记:如何消除秘钥数据对RPC负荷、日志、系统安全的伤害?
网络·笔记·网络协议·rpc
hkNaruto3 小时前
【AI】AI学习笔记:LangGraph入门 三大典型应用场景与代码示例及MCP、A2A与LangGraph核心对比
人工智能·笔记·学习
专注于大数据技术栈3 小时前
java学习--LinkedHashSet
java·开发语言·学习
kingmax542120084 小时前
北京高一历史上学期期末考情分析与核心知识点精讲(完整版)-吐血整理-全网最全
笔记·学习方法·历史
宵时待雨4 小时前
数据结构(初阶)笔记归纳3:顺序表的应用
c语言·开发语言·数据结构·笔记·算法
智者知已应修善业4 小时前
【C语言 dfs算法 十四届蓝桥杯 D飞机降落问题】2024-4-12
c语言·c++·经验分享·笔记·算法·蓝桥杯·深度优先
九成宫4 小时前
计算机网络期末复习——第4章:网络层 Part Three
网络·笔记·计算机网络·软件工程