0

に反応私はreact-router-dom 4.1.1と私のコンポーネントをレンダリングしようとすると、次のエラーを受信し続けるのインストール:はルータV4

Uncaught Error: React.Children.only expected to receive a single React element child.

ここに私の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; 

そして、ここでは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; 

<Nav />app.jsから削除するとレンダリングされますが、nav.jsxファイルに何が問題なのかはわかりません。

答えて

1

あなただけではなく、NavLinkをインポートするNavLinkとしてBrowserRouterをエイリアシング、いくつかの奇妙な理由で、だ:

import { BrowserRouter as NavLink } from 'react-router-dom'; 

それを取り除くと名前として直接インポートしなさい:

import { NavLink } from 'react-router-dom'; 

BrowserRouterので1つ期待する反応要素子供ではなくテキストであるため、エラーがスローされます。

+0

OMGありがとうございます!私が探していたチュートリアルでは、すべてのコンポーネントが1つのコンポーネントに含まれていたので、 'import {BrowserRouter as Router、Route、Link} 'を書いて、別のコンポーネントにコピー/ペーストしました。私はそれが問題だとは気付かなかった。ありがとうございました! – fafafariba

+0

@fafafaribaうん、私はチュートリアルに従うだけで、それを通って何が起こっているのか理解することはお勧めできません。 'BrowserRouter as Router'は使い易さのために' BrowserRouter'にエイリアスを与えています。答えが助けになった場合は、upv​​otingと受け入れを検討してください! – Li357

関連する問題