Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

163
Visualizações
Infracción invariable: no debe usar <Switch> fuera de un <Router>

tengo un problema que no se como solucionar me sale este error al ejecutar npm test

Infracción invariable: no debe usar <Switch> fuera de un <Router>

¿Cuál puede ser el problema y cómo puedo solucionarlo? La prueba que ejecuto es el app.test.js estándar que viene con reaccionar

 class App extends Component { render() { return ( <div className = 'app'> <nav> <ul> <li><Link exact activeClassName="current" to='/'>Home</Link></li> <li><Link exact activeClassName="current" to='/TicTacToe'>TicTacToe</Link></li> <li><Link exact activeClassName="current" to='/NumGame'>Quick Maths</Link></li> <li><Link exact activeClassName="current" to='/HighScore'>Highscore</Link></li> <li><Link exact activeClassName="current" to='/Profile'>Profile</Link></li> <li><Link exact activeClassName="current" to='/Login'>Sign out</Link></li> </ul> </nav> <Switch> <Route exact path='/' component={Home}></Route> <Route path='/TicTacToe' component={TicTacToe}></Route> <Route path='/NumGame' component={NumberGame}></Route> <Route path='/HighScore' component={HighScore}></Route> <Route path='/Profile' component={Profile}></Route> <Route path='/Login' component={SignOut1}></Route> </Switch> </div> ); } };
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

El error es correcto. Debe envolver el Switch con BrowserRouter u otras alternativas como HashRouter , MemoryRouter . Esto se debe a que BrowserRouter y las alternativas son la interfaz común de bajo nivel para todos los componentes del enrutador y utilizan la API de history de HTML 5, y la necesita para navegar de un lado a otro entre sus rutas.

Intenta hacer esto mejor

 import { BrowserRouter, Switch, Route } from 'react-router-dom';

Y luego envuelve todo así

 <BrowserRouter> <Switch> //your routes here </Switch> </BrowserRouter>
over 4 years ago · Santiago Trujillo Relatório

0

La forma correcta de manejar esto, según los desarrolladores de React Router, es envolver su prueba de unidad en un enrutador. Se recomienda usar MemoryRouter para poder reiniciar el enrutador entre pruebas.

Todavía puedes hacer algo como lo siguiente:

 <BrowserRouter> <App /> </BrowserRouter>

Luego en App :

 <Switch> <Route /> <Route /> </Switch>

Sus pruebas unitarias para la App normalmente serían algo como:

 const content = render(<App />); // Fails Unit test

Actualice la prueba unitaria a:

 const content = render(<MemoryRouter><App /></MemoryRouter>); // Passes Unit test
over 4 years ago · Santiago Trujillo Relatório

0

Ponga siempre BrowserRouter en los componentes de navegaciones, siga el ejemplo:

 import React, { Component } from 'react' import { render } from 'react-dom' import { BrowserRouter, Route, NavLink, Switch } from 'react-router-dom' var Componente1 = () => (<div>Componente 1</div>) var Componente2 = () => (<div>Componente 2</div>) var Componente3 = () => (<div>Componente 3</div>) class Rotas extends Component { render() { return ( <Switch> <Route exact path='/' component={Componente1}></Route> <Route exact path='/comp2' component={Componente2}></Route> <Route exact path='/comp3' component={Componente3}></Route> </Switch> ) } } class Navegacao extends Component { render() { return ( <ul> <li> <NavLink to="/">Comp1</NavLink> </li> <li> <NavLink exact to="/comp2">Comp2</NavLink> </li> <li> <NavLink exact to="/comp3">Comp3</NavLink> </li> </ul> ) } } class App extends Component { render() { return ( <BrowserRouter> <div> <Navegacao /> <Rotas /> </div> </BrowserRouter> ) } } render(<App/>, document.getElementById("root"))

Nota: el BrowserRouter acepta solo un elemento secundario.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda