路由器查询值已更改

JavaScriptJavaScriptBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本项目中,你将学习如何解决vue-router v3.4.0版本中的一个问题,即现在路由器查询中的未定义值已更改为未定义字符串。你将通过修改vue-router库的query.js文件中的resolveQuery函数来修复此问题。

👀 预览

修复后的查询解析效果

🎯 任务

在本项目中,你将学习:

  • 找到并理解query.js文件中的resolveQuery函数
  • 修改resolveQuery函数以正确处理查询中的未定义值
  • 使用修复后的代码重新构建vue-router 3.4.0项目
  • 测试修复以确保查询中的未定义值现在正确显示为空字符串

🏆 成果

完成本项目后,你将能够:

  • 识别并修复第三方库中的问题
  • 应用修改和重新构建项目的技术来应用修复
  • 理解全面测试更改以确保实现预期行为的重要性

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/BasicConceptsGroup(["`Basic Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/DOMManipulationGroup(["`DOM Manipulation`"]) javascript/BasicConceptsGroup -.-> javascript/functions("`Functions`") javascript/BasicConceptsGroup -.-> javascript/obj_manip("`Object Manipulation`") javascript/AdvancedConceptsGroup -.-> javascript/error_handle("`Error Handling`") javascript/DOMManipulationGroup -.-> javascript/dom_select("`DOM Selection`") javascript/DOMManipulationGroup -.-> javascript/dom_manip("`DOM Manipulation`") javascript/DOMManipulationGroup -.-> javascript/event_handle("`Event Handling`") javascript/DOMManipulationGroup -.-> javascript/dom_traverse("`DOM Traversal`") subgraph Lab Skills javascript/functions -.-> lab-445773{{"`路由器查询值已更改`"}} javascript/obj_manip -.-> lab-445773{{"`路由器查询值已更改`"}} javascript/error_handle -.-> lab-445773{{"`路由器查询值已更改`"}} javascript/dom_select -.-> lab-445773{{"`路由器查询值已更改`"}} javascript/dom_manip -.-> lab-445773{{"`路由器查询值已更改`"}} javascript/event_handle -.-> lab-445773{{"`路由器查询值已更改`"}} javascript/dom_traverse -.-> lab-445773{{"`路由器查询值已更改`"}} end

设置项目结构

首先,查看左侧文件的目录结构如下:

├── vue-router-3.4.0
├── vue.js
└── index.html
  1. 点击WebIDE右下角的Go Live按钮来运行项目。
  2. 打开虚拟机顶部的“Web 8080”并手动刷新,效果应如下所示:
图片描述
  1. 将上述图片中的地址复制到浏览器中并打开一个新窗口,查看地址栏以及页面的样子。
图片描述

解决Vue-Router 3.4.0中未定义查询值的问题

在这一步中,你将学习如何解决vue-router v3.4.0版本中路由器查询中的未定义值现在被更改为未定义字符串的问题。

  1. 打开vue-router-3.4.0/src/util/query.js文件。
  2. 在文件中找到resolveQuery函数。
  3. 更新resolveQuery函数以处理查询中的未定义值。将代码修改如下:
export function resolveQuery(
  query:?string,
  extraQuery: Dictionary<string> = {},
  _parseQuery:?Function
): Dictionary<string> {
  //...

  // TODO
  for (const key in extraQuery) {
    const value = extraQuery[key];
    parsedQuery[key] = Array.isArray(value)
   ? value.map((v) => (!v? v : "" + v))
      :!value
       ? value
        : "" + value;
  }
  return parsedQuery;
}

关键更改如下:

  • parsedQuery[key] =...赋值中,我们检查value是否为undefined。如果是,我们赋一个空字符串''而不是undefined值。
  • 对于数组值,我们还检查各个元素是否为undefined,并将它们替换为空字符串。

这确保了查询中的未定义值得到正确处理,不会被转换为未定义字符串。

测试修复

  1. 在终端中打开vue-router-3.4.0目录。
  2. 运行命令npm install来安装依赖项。这个过程可能需要一些时间,请耐心等待。(如果长时间卡住,请按Ctrl + C终止进程,然后再次运行此命令。)
  3. 所有依赖项成功安装后,运行命令npm run build来重新构建并发布项目。
  4. 刷新显示初始页面的浏览器窗口。
  5. 观察页面的行为以及地址栏中的URL。查询中的未定义值现在应该被正确处理并显示为空字符串。
图片描述

恭喜!你已成功修复vue-router 3.4.0版本中的未定义查询值问题。

✨ 查看解决方案并练习

总结

恭喜!你已完成本项目。你可以在LabEx中练习更多实验以提升技能。

您可能感兴趣的其他 JavaScript 教程