Introdução
Neste projeto, você aprenderá como resolver um problema na versão vue-router v3.4.0, onde valores indefinidos (undefined) em consultas (queries) do roteador agora são alterados para strings "undefined". Você corrigirá este problema modificando a função resolveQuery no arquivo query.js da biblioteca vue-router.
👀 Visualização

🎯 Tarefas
Neste projeto, você aprenderá:
- Localizar e entender a função
resolveQueryno arquivoquery.js - Modificar a função
resolveQuerypara lidar corretamente com valores indefinidos na consulta - Reconstruir o projeto vue-router 3.4.0 com a correção
- Testar a correção para garantir que os valores indefinidos na consulta agora sejam exibidos corretamente como strings vazias
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Identificar e corrigir problemas em uma biblioteca de terceiros
- Aplicar técnicas para modificar e reconstruir um projeto para aplicar uma correção
- Entender a importância de testar minuciosamente as alterações para garantir que o comportamento desejado seja alcançado
Configurar a Estrutura do Projeto
Para começar, observe a estrutura de diretórios dos arquivos à esquerda, conforme segue:
├── vue-router-3.4.0
├── vue.js
└── index.html
Clique no botão Go Live no canto inferior direito do WebIDE para executar o projeto.
Abra "Web 8080" no topo da VM e atualize-o manualmente. O efeito deve ser o seguinte:

Copie o endereço na imagem acima no seu navegador e abra uma nova janela para ver a barra de endereço e como a página se parece.

Resolver o Problema de Valor Indefinido na Query do Vue-Router 3.4.0
Nesta etapa, você aprenderá como resolver o problema em que valores indefinidos (undefined) em consultas (queries) do roteador agora são alterados para strings "undefined" na versão vue-router v3.4.0.
- Abra o arquivo
vue-router-3.4.0/src/util/query.js. - Localize a função
resolveQueryno arquivo. - Atualize a função
resolveQuerypara lidar com os valores indefinidos na consulta. Modifique o código da seguinte forma:
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;
}
As principais alterações são:
- Na atribuição
parsedQuery[key] = ..., verificamos se ovalueéundefined. Se for, atribuímos uma string vazia''em vez do valorundefined. - Para valores de array, também verificamos se os elementos individuais são
undefinede os substituímos por uma string vazia.
Isso garante que os valores indefinidos na consulta sejam tratados corretamente e não sejam convertidos em strings "undefined".
Testar a Correção
Abra o diretório
vue-router-3.4.0no terminal.Execute o comando
npm installpara instalar as dependências. Este processo pode levar algum tempo, por favor, seja paciente. (Se ficar preso por muito tempo, pressioneCtrl+Cpara terminar o processo e, em seguida, execute este comando novamente.)Após todas as dependências terem sido instaladas com sucesso, execute o comando
npm run buildpara reconstruir e lançar o projeto.Atualize a janela do navegador que estava exibindo a página inicial.
Observe o comportamento da página e a URL na barra de endereço. Os valores indefinidos na consulta agora devem ser tratados corretamente e exibidos como strings vazias.

Parabéns! Você corrigiu com sucesso o problema de valor de consulta indefinido na versão vue-router 3.4.0.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



