作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个不知道如何解决的问题,运行 npm test 时出现此错误
Invariant Violation: You should not use
<Switch>
outside a<Router>
问题是什么以及如何解决?我运行的测试是react自带的标准app.test.js
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>
);
}
};
最佳答案
错误是正确的。您需要使用 BrowserRouter
或其他替代方案(如 HashRouter
、MemoryRouter
)包装 Switch
。这是因为 BrowserRouter
和替代方案是所有路由器组件的通用低级接口(interface),它们使用 HTML 5 history
API,您需要它来导航回来并在您的路线之间往返。
尝试这样做
import { BrowserRouter, Switch, Route } from 'react-router-dom';
然后像这样包装所有内容
<BrowserRouter>
<Switch>
//your routes here
</Switch>
</BrowserRouter>
关于javascript - 不变违规 : You should not use <Switch> outside a <Router>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50584641/
我是一名优秀的程序员,十分优秀!