博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个问题一份收获——请求回来的数据应该怎么处理
阅读量:4311 次
发布时间:2019-06-06

本文共 1197 字,大约阅读时间需要 3 分钟。

今天使用vue在开发的时候遇到一个问题   具体可以看

看了别人的回答,感觉收获很大,所以来写一下自己的理解。

从数据结构、后台减压、<template>这几点来说

 

列表已经通过table做出来了,需要的进一步功能是在“查看详情”的点击事件中请求回该条数据的详细情况,且一次只显示一条反馈的详情,把数据放在data中的一个currentMsg对象中(只存放当前请求回来的数据),然后在该行追加一个tr并将相应的内容填充进去,

当时困惑的是如何能够以vue数据驱动视图的方式追加详情行,因为如果用js操作dom来做的话肯定没问题,但是在vue里面这样做就很low了,过不了自己这关,然后就在sf上面提了这个问题,看了的回答之后有一种茅塞顿开的感觉,

数据结构

这个可以说是通用的了,不仅仅是针对前端,因为一个良好的结构化数据可以很好的优化程序的结构,让别人更容易理解,

就这个历史反馈功能来说,后端给了我2个请求的接口,一个是根据当前用户获取该用户提交的所有反馈(allTitleInfo)的摘要信息,结构如下:

我也是按照这样的结构把数据填充到页面中的,另一个接口就是根据ID获取反馈的详情,

当时想的是增加一个变量currentInfo,点击查看详情请求数据之后把当前数据覆盖到currentInfo,然后在页面中渲染出来。  后来想了想:每次都要重新重新请求,不管是否请求过该条数据。

后台减压

对于用户反馈来说,这可以算是一个错误的算法,因为首先用户反馈的信息总量不大,完全可以在allTitleInfo中新增一个detail对象,请求之后就把该数据添加到其中,这样就通过判断当前反馈中是否存在减少了后续的请求。

并且,这样以id作为一组存放数据后,比单独增加一个currentInfo查找想要的数据更快,比如说原来的复杂度是O(1) + O(1),现在就变成了O(1)。

来看下优化后的allTitleInfo:

 

<template>

现在来说说vue里面的template,这个标签就类似我在  中提到的router-link一样,并没有实际的html意义(类似于一个意念盒子,反之div、section等是实体盒子)

图1渲染出来的方式是通过在tr中v-for遍历,类似下图:

既然已经把detail添加到里面了,肯定要在页面中把他体现出来(使用v-if达到不渲染占位的目的)

接下来来看用template如何做:

 

 v-if通过判断item.detail是否为空来决定渲染新增的tr,v-show通过判断currentIndex是否等于当前的index是否展示该tr,至于currentIndex的改变就可以放在“查看详情”的单击事件中了。

至此,这个功能算是完成了,放一张项目里面的效果图

转载于:https://www.cnblogs.com/lonhon/p/7119042.html

你可能感兴趣的文章
kafka web端管理工具 kafka-manager【转发】
查看>>
获取控制台窗口句柄GetConsoleWindow
查看>>
Linux下Qt+CUDA调试并运行
查看>>
51nod 1197 字符串的数量 V2(矩阵快速幂+数论?)
查看>>
OKMX6Q在ltib生成的rootfs基础上制作带QT库的根文件系统
查看>>
zabbix
查看>>
多线程基础
查看>>
完美解决 error C2220: warning treated as error - no ‘object’ file generated
查看>>
使用SQL*PLUS,构建完美excel或html输出
查看>>
SQL Server数据库笔记
查看>>
X-Forwarded-For伪造及防御
查看>>
android系统平台显示驱动开发简要:LCD驱动调试篇『四』
查看>>
Android 高仿微信头像截取 打造不一样的自定义控件
查看>>
Jenkins的初级应用(1)-Publish Over SSH
查看>>
利用正则表达式群发定制邮件
查看>>
【原】RDD专题
查看>>
第三周——构建一个简单的Linux系统MenuOS
查看>>
Docker 的两类存储资源 - 每天5分钟玩转 Docker 容器技术(38)
查看>>
Codeforces 257D
查看>>
常用的20个强大的 Sublime Text 插件
查看>>