[英]React.Children.only expected to receive a single React element child in React Router v4
I installed react-router-dom
4.1.1 and keep receiving the following error when trying to render my components: 我安装了
react-router-dom
4.1.1并在尝试渲染我的组件时继续收到以下错误:
Uncaught Error:
React.Children.only
expected to receive a single React element child.未捕获的错误:
React.Children.only
预计会收到一个React元素子元素。
Here's my app.js
file: 这是我的
app.js
文件:
import React from 'react';
import {BrowserRouter as Router, Route} from 'react-router-dom';
import Nav from './components/Nav/nav';
import Search from './components/Search/search';
import Favorites from './components/Favorites/favorites';
const App = () => (
<Router>
<div className="app">
<Nav />
<Route exact path="/" component={Search}/>
<Route path="/favorites" component={Favorites}/>
</div>
</Router>
);
export default App;
And here is nav.jsx
: 这是
nav.jsx
:
import React from 'react';
import {BrowserRouter as NavLink} from 'react-router-dom';
const Nav = () => (
<ul className="nav">
<li><NavLink exact to="/" activeClassname="active">Search</NavLink></li>
<li><NavLink to="/favorites" activeClassname="active">Favorites</NavLink></li>
</ul>
);
export default Nav;
When I remove <Nav />
from app.js
it renders, but I don't see what's wrong with the nav.jsx
file. 当我从
app.js
删除<Nav />
时它会渲染,但我看不出nav.jsx
文件有什么问题。
You're, for some odd reason, aliasing BrowserRouter
as NavLink
instead of just importing NavLink
: 出于某些奇怪的原因,您将
BrowserRouter
混淆为NavLink
而不是仅导入NavLink
:
import { BrowserRouter as NavLink } from 'react-router-dom';
Get rid of that and import directly as a name: 摆脱它并直接导入为名称:
import { NavLink } from 'react-router-dom';
Because BrowserRouter
expects one React element child, not text, the error is thrown. 因为
BrowserRouter
期望一个React元素而不是文本,所以会抛出错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.