Invarianten-Verletzung: sollten Sie nicht verwenden, <Switch - > außerhalb <Router>
Ich habe ein problem, ich weiß nicht, wie zu lösen, ich bekomme diese Fehlermeldung beim ausführen von npm test Invariant Violation: You should not use <Switch> outside a <Router>
. Was kann das problem sein und wie kann ich es lösen? Den test habe ich ausgeführt, ist die standard-app.test.js kommt mit reagieren
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>
);
}
};
- Beachten Sie, dass dieser Fehler hat nichts mit der Tatsache zu tun, Sie eine unit-test - Sie würden es bekommen, zur Laufzeit zu.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler zu korrigieren. Sie müssen wickeln Sie die
Switch
mitBrowserRouter
oder andere alternativen wieHashRouter
,MemoryRouter
. Dies ist, weilBrowserRouter
und alternativen sind der gemeinsame low-level-Schnittstelle für alle router, Komponenten und machen Sie Gebrauch von der HTML-5 -history
API, und Sie müssen diese zurück zu bewegen und her zwischen Ihre Routen.Versuchen, dies zu tun eher
Und dann wickeln Sie alles wie Sie diese
"react-router-dom": " ^5.0.0",
funktioniert nicht, wenn das umwickeln mitStaticRouter
für server-side-rendering. Es verwendet, um Arbeit in4.3.1
obwohl.Stellen immer BrowserRouter in der navegations Komponenten, dann Folgen Sie dem Beispiel:
Hinweis: die BrowserRouter akzeptieren Sie nur ein Kind-element.