【vue2】近期bug收集与整理01

简介: bug收集与整理

1登陆token的问题

流程:收集检验-发请求-存入vuex-token本地化

通常我处理登录业务的时候流程是:给登录的那个按钮注册一个点击事件,点击的时候调用store中的actions触发请求,再调用mutations将我们的一个token进行本地化的存储。

思路是这样的没问题,可我们存的时候对于存token的位置,就需要注意下了。当我点击登录的时候需要将在发送的时候将token存入请求头中。

可有时候当我忘记写之后,查看network会提示我没有登录,为什么点击登录的时候没有登录呢?

(见下图)

bd446fa695b144a795487adc0ed454f9.png

检查可知,我在发送请求的时候没有在请求拦截器中将token存入请求头中

c72383ab471f47e4a0f5a1fa99fce5ea.png

写入请求重新发送请求查看:

cc3eb1cbbeff41fba878bf738daf07a5.png

这个时候我们的登录业务就完成啦!

2.组件没找到的原因

我们组件使用的三步:导入、注册、引用。当我将这个组件导入时,下意识加上了{ } ,结果提示我组件导入失败。检查可知是我的注册的组件引入问题。当我把{ }删除之后就好了

a0a54e8e2b574b06ba5dce24dc3e4c3b.png

3.父传子,子接收错误

父传值给其他可以写三个参数type(类型),required(是否必须使用),default(默认值),下图为required写成了require

09ddd06ffb6b4fd09b266219eb1bff97.png

4.tree组件的使用

Tree组件 | Element

d0fe72fd58b0416bafbe8800337faa48.png

这是官网的逻辑,下面的这个例子也是基于这个思想整合而成的。

逻辑:当pid与id相等的时候就把包含pid的这一项当作id这一项的子集

分析请求我们的一级数据与二级数据有什么特征,经分析得知:当pid与id相等的时候就把包含pid的这一项当作id这一项的子集。

  1. 传进来一个数组对象,定义一个空数组与对象来接收我们传递的值
  2. 遍历形参每一项遍历给每一项添加一个children空数组
  3. 将每一项的id拿出来作为我们对象的键,每一个item作为值
  4. 遍历我们的形参将有pid的项目收集(就是说它一定是某一项的子集)
  5. 根据pid与id关系,将有pid的项目将它加入我们的children中
  6. 如果没有pid则就是一级的
export function treeListData(list) {
// 1.定义列表与对象
  const treeList = []
  const obj = {}
  list.forEach(item => {
    if (!item.children) {
      item.children = []
    }
    obj[item.id] = item
  })
  console.log(obj, 'obj')// 遍历形参list每一项,将每一项的item.id中作为键,每一个item作为值
  // 循环
  list.forEach(item => {
  // 2.判断依据有pid就是父项,有就提取出来,并且把这一项添加到上级的children中
    const fatherItem = obj[item.pid]
    if (fatherItem) {
      fatherItem.children.push(item)
    } else {
      treeList.push(item)// 没有pid为最大的
    }
  })
  return treeList
}

5.nextTick处理组件缓存数据未清空的问题

拿页面中常见的弹窗来说,我们会封装一个dialog组件套起来我们form表单数据。当我正常收集/渲染数据关闭之后,第二次点开发现数据依旧是上次写/渲染的数据。解决办法:

1.给数组绑定一个v-if属性,当我关闭时将弹窗改为false,这样做是可以,可频繁的创建组件/销毁组件会影响性能。

2.给组件使用$nextTick,当我们获取到了数据再发送数据即可,这样就避免大量的新增销毁组件

cde96d5bf5c44a17a3b62fd878390778.png

6.给自定义组件绑定click点击事件失败

因为在自定义组件上注册的事件触发的是组件自定义的事件,需要加上.native修饰符

17573d2385564880860158de8c77f395.png

7.中英文键值的转换

在我们学习js的过程中,有的时候我们接收发送给后端的数据,需要我们提供一个对象,并且对象中的键与值都是中文,而我们这边只有键与值均为中文的对象数据与一份键的英文对应表。此时我们怎么将我们的中午的键值根据对应表转换成英文键,中文值呢?当然使用我们js中的方法啦!(Object.keys()、map()、foreach()等),好了,我们开始我的的案例讲解。

1.中文的键值对象

arrList: [
        { 入职日期: 44505, 姓名: '老张', 工号: '9002', 手机号: '13800866258', 聘用形式: 2, 转正日期: 44821, 部门: '开发部' },
        { 入职日期: 44505, 姓名: '老王', 工号: '9008', 手机号: '13800866328', 聘用形式: 3, 转正日期: 44891, 部门: '人事部' },
        { 入职日期: 44505, 姓名: '老程', 工号: '9005', 手机号: '13800866952', 聘用形式: 1, 转正日期: 44892, 部门: '人事部' }]
    }

2.我们中英文键值对应表

const mapInfo = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber',
        '部门': 'departmentName',
        '聘用形式': 'formOfEmployment'
      }

思路:

       找出所有的中文key

       得到对应的英文key

       拼接一个新对象: 英文key:每一项的中文值

transExcel(results) {
      const mapInfo = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber',
        '部门': 'departmentName',
        '聘用形式': 'formOfEmployment'
      }
      return results.map(item => {
        const enObj = {}// 存放英文键,中文值
        const zhKeys = Object.keys(item)// 得到的是每一项的键(中文)
        zhKeys.forEach(zhKey => {
          const enKey = mapInfo[zhKey]// 遍历mapInfo的键,得到英文的值
          if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
            enObj[enKey] = formatExcelDate(item[zhKey])
          } else {
            enObj[enKey] = item[zhKey]
          }
        })
        return enObj
      })
    },

效果检查:

e8c72115269e46ea90614af4830f9e52.png




相关文章
|
3月前
|
JavaScript 前端开发 API
花了一天的时间,地板式扫盲了vue3中所有API盲点
这篇文章全面介绍了Vue3中的API,包括组合式API、选项式API等内容,旨在帮助开发者深入了解并掌握Vue3的各项功能。
花了一天的时间,地板式扫盲了vue3中所有API盲点
|
4月前
|
JavaScript API UED
花了一天的时间,地板式扫盲了 Vue 3 所有 API 盲点
花了一天的时间,地板式扫盲了 Vue 3 所有 API 盲点
|
7月前
|
JavaScript 前端开发 关系型数据库
基于Vue的在线购物系统的设计与实现(论文+源码)_kaic
基于Vue的在线购物系统的设计与实现(论文+源码)_kaic
|
JavaScript 前端开发 计算机视觉
|
JavaScript 编译器 API
Vue项目实战——实现GitHub搜索案例(学以致用,两小时带你巩固和强化Vue知识点)
Vue项目实战——实现GitHub搜索案例(学以致用,两小时带你巩固和强化Vue知识点)
165 0
|
存储 JavaScript 编译器
Vue项目实战——实现一个任务清单(学以致用,两小时带你巩固和强化Vue知识点)
Vue项目实战——实现一个任务清单(学以致用,两小时带你巩固和强化Vue知识点)
319 0
|
敏捷开发 存储 JavaScript
基于Vue框架的思源新闻发布平台设计与实现(论文+源码)_kaic
经过针对全校随机抽取的100名学生进行的研究发现,有约69%的学生,并不关心思源新闻,一些学生表示思源每天发生的大小事与他们无关。这项调查突显了需要提供一个能激发学生对思源校园新闻感兴趣的平台。因此本文为思源学院全院师生设计一个基于Vue框架的思源新闻发布平台,以解决校园新闻发布的不便利和信息化程度不高的问题。 本课题主要对基于Vue框架的思源新闻发布平台网站的设计与开发进行研究。论文首先描述了课题的研究背景、目的和意义,然后通过可行性分析和需求分析确定了系统开发方向。思源新闻发布平台主要采用了敏捷开发方法,通过不断迭代和反馈,不断完善系统功能和界面设计。在技术选型上,本系统采用了MySQL数
|
JSON 前端开发 JavaScript
搭建Vue3组件库:第十六章 品质保证:发布覆盖率测试报告
本章介绍如何发布你的组件代码覆盖率已经获取对应徽章。
657 0
搭建Vue3组件库:第十六章 品质保证:发布覆盖率测试报告
|
JavaScript 前端开发 测试技术
若川说"可能是历史上最简单的一期omit.js"源码共读,但我学到了这些
这里之前刚好学习过另外一个开源仓库 如何为前端项目一键自动添加eslint和prettier的支持 ,它这里是通过封装然后运行指令,直接将eslint和prettier的配置文件在项目中生成了。而@umijs/fabric这里是引用了封装的配置文件。
198 0
|
前端开发
前端知识案例4-依赖收集4-问题解决
前端知识案例4-依赖收集4-问题解决
45 0
前端知识案例4-依赖收集4-问题解决