当前位置: 首页 > article >正文

第 27 课:任务页分页大小记忆与用户偏好

第 27 课任务页分页大小记忆与用户偏好这一课我们继续沿着任务管理主线往下走补上另一个非常真实的后台系统能力让用户自己决定“每页显示多少条数据”并把这份偏好记住。很多初学者会觉得分页不是已经做完了吗其实还没有。因为真实项目里分页通常不只包含当前第几页还常常包含每页显示多少条而且这两个状态虽然都和分页有关但它们不一定应该用同一种存储策略。这一课一句话在做什么这一课我们完成了 5 件事给任务页分页栏加了“每页显示多少条”的切换能力让任务页分页大小只能在一组合法选项中切换把分页大小保存到localStorage刷新后自动恢复这份分页偏好补上单元测试、E2E、类型和文档这节课最重要的设计问题这一课最值得你认真想清楚的问题是页码和分页大小到底该不该都写进 URL答案是页码更适合进 URL分页大小更适合做本地偏好为什么页码为什么适合写进 URL因为页码更像“当前场景状态”。例如你现在正在看第 3 页这往往是一个可以刷新恢复可以分享给别人可以前进后退回溯的状态。所以它很适合写进 URL。分页大小为什么更适合写进本地存储因为分页大小更像“个人使用习惯”。例如你喜欢每页 2 条每页 4 条每页 6 条这通常不是业务筛选条件而是你自己的阅读偏好所以它更适合记在本机刷新保留不一定需要分享给别人这就是为什么这一课我们特意把分页大小做成localStorage持久化而不是URL query 同步这节课新增了什么类型文件src/types/task.ts这一课新增了两个类型TaskPageSizeOptionTaskPageSizeOptionItem这里的意义非常重要。我们没有把分页大小当成一个“随便来个数字就行”的状态而是明确限制为246这样做的好处是页面状态更稳定测试边界更清晰本地存储恢复时更容易做合法性清理这节课在useTasksPage里做了什么文件src/composables/useTasksPage.ts这一课最核心的改动仍然在任务页 composable 里。因为“分页大小偏好”属于页面级状态它不是单个分页组件自己的局部临时状态新增了分页大小相关常量例如DEFAULT_TASK_PAGE_SIZETASK_TABLE_PAGE_SIZE_STORAGE_KEYTASK_PAGE_SIZE_OPTIONS这些常量的作用是统一默认值统一本地存储 key统一合法选项这样后面组件层页面层测试层都能复用同一份定义。新增了本地存储读写函数例如readPersistedTaskPageSize()persistTaskPageSize()它们负责从本地存储里读取旧偏好如果值非法就回退默认值把最新合法分页大小写回本地存储这和上一课的“列配置持久化”是同一个工程思路。也就是说你现在已经开始在项目里重复练同一种“用户偏好状态”的设计模式了。新增了标准化函数例如isTaskPageSizeOptionnormalizeTaskPageSize这类函数的意义是不要相信本地存储永远是干净的。本地存储里的值可能来自老版本数据手动修改异常写入所以你每次读出来都应该先做合法性清理。这就是为什么我们这次依然坚持先读再校验再使用这节课对分页逻辑带来了什么变化原来任务页是固定每页 4 条现在变成了pageSize是一个响应式ref这会带来 3 个直接影响。1. 总页数会跟着变化例如 6 条任务时每页 4 条 共 2 页每页 2 条 共 3 页2. 当前页切片结果会跟着变化也就是说paginatedTasks不再只依赖currentPage还依赖pageSize3. 页码合法性也会受到影响如果你原来在第 3 页然后把分页大小改大可能总页数会立刻变少。所以这一课里我们也把filteredTasks监听升级成了同时关注filteredTaskspageSize这样一来只要分页大小变化导致总页数不合法页码就会自动钳制回合法范围。为什么这节课切换分页大小后要回到第一页这一课里我们特意在handlePageSizeChange里做了一个策略切换分页大小后主动回到第一页为什么这样做因为分页大小变化后旧页码的语义很容易变得不稳定。例如你原来在第 2 页每页 4 条现在改成每页 2 条这时“第 2 页”已经不再表示原来那一段数据了。为了让体验更清楚、更稳定我们直接回到第一页。这是一个很常见、也很合理的后台系统设计。TaskPaginationBar.vue这次发生了什么变化文件src/components/tasks/TaskPaginationBar.vue这一课里分页栏不再只有分页摘要页码切换器现在还新增了分页大小下拉框结构也更完整了左侧展示摘要右侧展示分页大小控制结果超过一页时再展示页码控件新增了哪些 propspageSizeOptions这说明分页组件不自己定义“有哪些大小可选”而是由页面层传入。这样组件仍然保持展示层而不是状态定义中心新增了哪些事件page-size-change这表示分页栏只负责把用户意图抛出去不自己决定如何持久化。这仍然符合我们一直在练的分层原则组件负责 UI 与事件composable 负责状态与行为为什么这节课还要补 E2E文件e2e/app.spec.tse2e/pages/TasksPage.ts因为“分页大小记忆”这种功能光做单元测试还不够。它还涉及Element Plus 下拉框真实交互分页器页码是否真的变化刷新后是否真的恢复这些都属于真实页面行为所以很适合用 E2E 验证。这次新增的任务页 E2E 大致验证了把分页大小切到2看摘要是否更新看第3页是否出现刷新页面再次确认摘要和第3页仍然存在为什么这节课也要补单元测试文件src/composables/__tests__/useTasksPage.spec.ts这次新增的单元测试主要覆盖了从localStorage恢复分页大小非法分页大小自动回退默认值切换分页大小后重置页码切换分页大小后重新计算分页结果切换分页大小后写回本地存储你会发现单元测试更适合验证逻辑边界E2E 更适合验证真实交互闭环这两层各有价值不是互相替代关系。这一课最值得你真正学会什么如果你只记住“多了一个每页显示条数下拉框”那还不够。你更应该学会下面这 6 点页码和分页大小虽然都属于分页但不一定适合用同一种存储策略业务场景状态更适合进 URL个人使用偏好更适合进本地存储本地持久化状态读取后一定要先做标准化分页大小一旦变成响应式状态就会影响总页数、切片结果和页码合法性组件层负责交互入口组合式函数负责偏好状态与持久化这种用户偏好能力也应该同时补单元测试和 E2E这节课改了哪些文件src/types/task.tssrc/composables/useTasksPage.tssrc/composables/__tests__/useTasksPage.spec.tssrc/components/tasks/TaskPaginationBar.vuesrc/views/TasksView.vuee2e/pages/TasksPage.tse2e/app.spec.tsdocs/27-task-page-size-persistence.mddocs/README.md这一课的验证结果这一课相关改动已经通过npm run test:unit -- --runnpm run test:e2e -- --projectchromiumnpm run type-checknpm run lint下一步最适合继续什么沿着“任务表格更像真实后台系统”的主线后面最自然的方向有三个记住排序偏好记住筛选偏好做列顺序拖拽或列宽记忆如果继续按当前节奏推进我更推荐下一课做排序偏好与默认工作视图因为它会让你进一步比较哪些状态适合进 URL哪些状态适合做本地偏好

相关文章:

第 27 课:任务页分页大小记忆与用户偏好

第 27 课:任务页分页大小记忆与用户偏好 这一课,我们继续沿着任务管理主线往下走,补上另一个非常真实的后台系统能力: 让用户自己决定“每页显示多少条数据”,并把这份偏好记住。 很多初学者会觉得: 分页不…...

炉石传说高级插件开发实战指南:构建强大游戏增强工具

炉石传说高级插件开发实战指南:构建强大游戏增强工具 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是基于BepInEx框架的炉石传说多功能增强插件,为技术爱好者…...

利用StructBERT自动生成测试用例:基于需求文档的语义匹配

利用StructBERT自动生成测试用例:基于需求文档的语义匹配 1. 引言 你有没有过这样的经历?面对一份几十页的新需求文档,测试工程师需要从头开始,一个字一个字地构思测试用例。这个过程不仅耗时耗力,还特别容易遗漏一些…...

ollama + QwQ-32B实战落地:教育智能助教、CTF解题助手、专利分析工具

ollama QwQ-32B实战落地:教育智能助教、CTF解题助手、专利分析工具 最近在折腾大模型本地部署,发现了一个挺有意思的模型——QwQ-32B。这名字听起来有点可爱,但能力可不简单。它属于Qwen系列,主打的是推理能力,号称在…...

【企业级AI编码治理黄金标准】:基于127个真实项目数据,揭示版本不一致导致交付延期的3.8倍概率提升

第一章:智能代码生成代码版本对比 2026奇点智能技术大会(https://ml-summit.org) 随着大语言模型在软件开发流程中的深度集成,智能代码生成工具已从辅助补全演进为具备上下文感知、多轮迭代与版本协同能力的工程级组件。不同代际的代码生成系统在输出一…...

CosyVoice跨语言克隆实战:当ttsfrd吃掉你的英文文本时该怎么办?

CosyVoice跨语言克隆实战:当ttsfrd吃掉你的英文文本时该怎么办? 在语音合成领域,跨语言克隆一直是个令人头疼的问题。最近在使用CosyVoice进行中英文混合语音合成时,我发现一个奇怪的现象:当使用ttsfrd作为文本规范化工…...

智能代码生成兼容性验证实战手册(2024企业级落地白皮书)

第一章:智能代码生成兼容性验证的定义与价值边界 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成兼容性验证,是指在模型输出代码后,系统性评估其在目标运行环境(如特定语言版本、依赖库约束、安全策略、构建工具链&a…...

幻灯片制作工具GiliSoft SlideShow Maker

链接: https://pan.baidu.com/s/1EUYCTUcMfqxqZQf_TbcMMg 提取码: dc1a GiliSoft SlideShow Maker原名字GiliSoft SlideShow Movie Creator是易于使用但功能强大的照片到视频转换器。借助SlideShow Movie Creator,您可以将您的照片与音乐和2D / 3D过渡效果结合在一…...

**发散创新:基于Python的连续学习模型实战与优化策略**在现代机器学习工程

发散创新:基于Python的连续学习模型实战与优化策略 在现代机器学习工程中,连续学习(Continual Learning) 已成为构建具备长期适应能力系统的必要技术路径。传统训练方式一旦遇到新任务就会“遗忘”旧知识——这正是灾难性遗忘问题…...

手把手教你用lite-avatar形象库:快速为数字人项目找到完美“脸”

手把手教你用lite-avatar形象库:快速为数字人项目找到完美"脸" 1. 为什么需要lite-avatar形象库? 开发数字人项目时,最让人头疼的环节之一就是寻找合适的虚拟形象。传统方案要么需要从零开始训练模型,耗费大量时间和算…...

Pi0 Robot Control Center保姆级教程:三视角图像预处理与归一化方法

Pi0 Robot Control Center保姆级教程:三视角图像预处理与归一化方法 1. 为什么图像预处理是机器人控制的关键一步 你可能已经试过直接把手机拍的三张照片扔进Pi0 Robot Control Center,结果发现模型预测的动作完全不对劲——机械臂突然往天花板方向猛抬…...

SeqGPT-560M实操手册:审计底稿中‘被审计单位’‘问题描述’‘整改建议’三段式抽取

SeqGPT-560M实操手册:审计底稿中‘被审计单位’‘问题描述’‘整改建议’三段式抽取 1. 项目简介 SeqGPT-560M是一个专门为企业级信息抽取需求定制开发的高性能AI系统。与常见的聊天对话模型不同,这个系统专注于一件事:从复杂的非结构化文本…...

GLM-4.7-Flash镜像详解:预加载59GB模型,支持4096 tokens上下文

GLM-4.7-Flash镜像详解:预加载59GB模型,支持4096 tokens上下文 1. 模型概述 1.1 GLM-4.7-Flash核心特性 GLM-4.7-Flash是智谱AI推出的新一代开源大语言模型,采用创新的MoE(混合专家)架构设计。作为当前最强的开源中…...

Qwen3.5-9B-AWQ-4bit Visio图表智能生成:根据文本描述自动创建流程图与架构图

Qwen3.5-9B-AWQ-4bit Visio图表智能生成:根据文本描述自动创建流程图与架构图 1. 效果亮点预览 想象一下,当你需要快速绘制一个系统架构图或业务流程流程图时,只需输入一段文字描述,就能在几秒钟内获得结构清晰的图表草稿。这正…...

如何为Unity游戏添加实时翻译:XUnity.AutoTranslator终极指南

如何为Unity游戏添加实时翻译:XUnity.AutoTranslator终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过精彩的Unity游戏?XUnity.AutoTranslato…...

StructBERT实战:用语义相似度工具构建智能客服问答匹配系统

StructBERT实战:用语义相似度工具构建智能客服问答匹配系统 1. 项目背景与需求分析 在智能客服系统开发中,准确理解用户问题并匹配到预设答案是最核心的挑战。传统的关键词匹配方法存在明显局限: 无法处理同义表达:"怎么退…...

基于SenseVoice-Small的会议语音实时转写系统开发

基于SenseVoice-Small的会议语音实时转写系统开发 企业会议效率低、纪要整理耗时耗力?试试用AI语音转写技术让会议记录自动化,实时生成精准字幕和结构化纪要。 1. 会议语音转写的实际痛点 日常工作中,会议是最常见的沟通场景,但会…...

STM32F103RBT6上,用CubeMX和HAL库搞定FreeModbus RTU从站(附完整代码)

STM32F103RBT6实现FreeModbus RTU从站的工业级开发指南 在工业自动化领域,Modbus协议因其简单可靠的特点成为设备通信的事实标准。本文将深入讲解如何在STM32F103RBT6平台上,通过CubeMX和HAL库构建一个稳定高效的FreeModbus RTU从站系统,并提…...

LeRobot主从臂校准全流程:从端口号设置到远程操作实战

LeRobot主从臂校准全流程:从端口号设置到远程操作实战 在机器人控制领域,主从臂系统因其直观的操作方式和精确的同步性能,正逐渐成为工业自动化、医疗手术和教育研究的热门选择。LeRobot作为一个开源的机器人控制项目,通过其简洁的…...

千问3.5-2B VMware虚拟机开发环境部署全流程

千问3.5-2B VMware虚拟机开发环境部署全流程 1. 引言 如果你是一名习惯使用VMware虚拟机的开发者,想要搭建一个隔离的AI开发测试环境来运行千问3.5-2B模型,这篇教程就是为你准备的。我们将从零开始,一步步指导你完成整个部署流程。 为什么…...

VibeVoice Pro中小企业部署案例:CRM系统嵌入式语音播报模块

VibeVoice Pro中小企业部署案例:CRM系统嵌入式语音播报模块 1. 引言:当CRM系统“开口说话” 想象一下这个场景:一位销售经理正盯着电脑屏幕,快速浏览着密密麻麻的客户跟进列表。他需要筛选出今天需要电话回访的客户,…...

Qwen3语义雷达:无需代码,可视化操作,快速体验AI语义理解

Qwen3语义雷达:无需代码,可视化操作,快速体验AI语义理解 1. 项目概述 Qwen3语义雷达是基于阿里通义千问Qwen3-Embedding-4B大模型构建的智能语义搜索演示服务。这个工具最大的特点就是让普通用户也能轻松体验AI语义理解的能力,完…...

Phi-3-mini-4k-instruct-gguf详细步骤:GGUF模型加载、CUDA推理加速与响应延迟优化

Phi-3-mini-4k-instruct-gguf详细步骤:GGUF模型加载、CUDA推理加速与响应延迟优化 1. 模型简介与环境准备 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型,特别适合问答、文本改写和摘要生成等场景。这个GGUF格式的版本经过优化&#xff…...

Python3.8镜像效果展示:独立环境管理让开发效率翻倍

Python3.8镜像效果展示:独立环境管理让开发效率翻倍 1. 为什么需要Python独立环境 在Python开发中,最令人头疼的问题莫过于"这个项目在我的电脑上能运行,为什么在你的电脑上就不行?"这种问题通常源于不同项目依赖的Py…...

零基础入门AIVideo:输入主题,全自动输出专业长视频,手把手教学

零基础入门AIVideo:输入主题,全自动输出专业长视频,手把手教学 1. 为什么你需要这个AI视频工具 想象一下这样的场景:你有一个绝妙的视频创意,但既不会剪辑也没有专业设备,甚至连脚本都不知道怎么写。传统…...

RexUniNLU RexPrompt技术解析:显式图式指导器如何缓解零样本任务歧义性

RexUniNLU RexPrompt技术解析:显式图式指导器如何缓解零样本任务歧义性 1. 引言:当AI面对“未知”任务时 想象一下,你拿到一个全新的文本处理任务,比如从一段新闻里找出所有“人物”和“组织机构”,但之前没人告诉过…...

人工智能入门:图解Qwen3-ASR-0.6B语音识别模型的工作原理

人工智能入门:图解Qwen3-ASR-0.6B语音识别模型的工作原理 你有没有想过,当你对着手机说“嘿,Siri”或者“小爱同学”时,它到底是怎么听懂你说话的?这背后,就是语音识别技术在默默工作。今天,我…...

Nunchaku FLUX.1-dev 生成作品赏析:建筑与室内设计概念图集

Nunchaku FLUX.1-dev 生成作品赏析:建筑与室内设计概念图集 最近试用了Nunchaku FLUX.1-dev模型来生成一些建筑和室内设计的概念图,结果有点超出我的预期。它好像真的能“听懂”一些关于空间、材质和风格的描述,然后给你画出来。对于建筑师、…...

教育信息化2.0实践:BERT文本分割-中文-通用领域支撑智慧课堂学情分析

教育信息化2.0实践:BERT文本分割-中文-通用领域支撑智慧课堂学情分析 1. 引言:从课堂实录到结构化文本的挑战 想象一下这样的场景:一堂45分钟的智慧课堂结束后,语音转写系统生成了上万字的课堂实录文本。老师想要快速了解学生的…...

3大核心技术揭秘:MAA如何实现明日方舟全自动化游戏体验

3大核心技术揭秘:MAA如何实现明日方舟全自动化游戏体验 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gi…...