
记录一次需求变动导致的重构
发布日期:2021-05-07 06:19:35
浏览次数:11
分类:原创文章
本文共 1523 字,大约阅读时间需要 5 分钟。
前言:
今天接到测试通知,需要将之前的检索框改为:当用户切换过滤条件时不执行跳转检索页面,只有点击或者enter的时候才跳转检索页面。之前的设计是切换过滤条件会执行跳转。
正文:
这个小小的变动影响面蛮多的,因为我们的输入框state是写入store里的,过滤切换和点击都会执行mutation,这样我们在其他页面就可以watch到该mutation,从而发出请求。现在需要对过滤条件进行拆分:需要跳转时分发mutation替换整个节点树从而可以触发searchOption计算属性的watch,并拿到信息的最新值,进行检索。而切换过滤条件时仅仅分发一个子属性mutation,分发后不会触发searchOption计算属性的watch(实质上也是变化了的,只是没有触发watch而已),这样就实现了状态的分离:enter输入、按钮检索时触发watch,过滤条件切换时不触发。
问题解决后让我们重新思考下状态的设计:
- 应该保持怎样的设计力度?以input检索框为例:我们有输入状态、enter状态、点击状态、勾选拼写提示的某条时的状态。等等,可能很多,我们应该思考我们可能会关注哪些状态?(根据状态的改变执行哪些不同的逻辑,如果执行逻辑相同那么可以假想同样的状态)
- 假设我们需要关注用户输入状态、用户enter状态、用户勾选状态、用户切换状态enter和勾选执行同样的逻辑合并状态,一共二个状态,可以多个mutation.分别为用户输入时执行查询、enter和勾选时执行跳转页面查询,切换时仅仅更新记录,这样我们就有两个getters。,我们称getters为状态,而state里的值为记录。
- 然后我们就在页面里添加2个计算属性和watch.当状态改变时执行相应的逻辑。
export default { state: { input:{ value:'', filter1:'', filter2:'', } }, getters: { getInputData(state) { //用户enter、或者勾选时 return state.input; }, getInputValue(state){ //用户输入时 return state.input.value; } }, mutations: { updateInputValue(state, data) { //更新用户的输入 state.input = data; }, updateInputFilter1(state,data){ //更新过滤1的切换 state.input.filter1 = data; }, updateInputFilter2(state,data){ //更新过滤2的切换 state.input.filter1 = data; }, }}//可能使用该store的.vue文件computed:{ inputData(){ return this.$store.getters.getInputData }, inputValue(){ return this.$store.getters.getInputValue; }},watch:{ inputData(newVal){ //执行跳转 }, inputValue(newVal){ //用户输入时执行 }}
总结:设计好状态很重要
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月31日 10时52分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
「CF149D」括号涂色 区间DP好题
2019-03-04
树状数组 模板总结
2019-03-04
「NOI2015」程序自动分析 并查集题解
2019-03-04
[JSOI2008]Blue Mary的战役地图 Hash题解
2019-03-04
Ubuntu修改终端上显示的用户名和主机名(详细步骤)
2019-03-04
教你写一手漂亮的伪代码(详细规则&简单实例)
2019-03-04
MySQL的基本体系和架构介绍
2019-03-04
MySQL数据备份实践和整理
2019-03-04
结构型设计在工作中的一些经验总结
2019-03-04
如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
2019-03-04
腾讯物联网操作系统正式开源,最小体积仅1.8 KB
2019-03-04
不懂数据库的码农不是好程序员!
2019-03-04
全球首个!阿里云开源批流一体机器学习平台Alink……
2019-03-04
必须要看的网上冲浪安全攻略!
2019-03-04
红点中国、红杉中国联合领投,WakeData惟客数据完成1000万美元B轮融资
2019-03-04
看完这篇操作系统,和面试官扯皮就没问题了!
2019-03-04
OpenStack发布Ussuri版本 实现智能开源基础设施的自动化
2019-03-04
整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划
2019-03-04
2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
2019-03-04
“编程能力差,90%输在了数学上!”CTO:多数程序员都是瞎努力!
2019-03-04