私のApp.jsxファイル:
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, Link, browserHistory, IndexRoute } from 'react-router'
class App extends React.Component {
render() {
return (
<div>
<ul>
<li>Home</Link>
<li>About</Link>
<li>Contact</Link>
</ul>
{this.props.children}
</div>
)
}
}
export default App;
class Home extends React.Component {
render() {
return (
<div>
<h1>Home...</h1>
</div>
)
}
}
export default Home;
class About extends React.Component {
render() {
return (
<div>
<h1>About...</h1>
</div>
)
}
}
export default About;
class Contact extends React.Component {
render() {
return (
<div>
<h1>Contact...</h1>
</div>
)
}
}
export default Contact;
私のMain.jsファイル:
ReactDOM.render((
<Router history = {browserHistory}>
<Route path = "/" component = {App}>
<IndexRoute component = {Home} />
<Route path = "home" component = {Home} />
<Route path = "about" component = {About} />
<Route path = "contact" component = {Contact} />
</Route>
</Router>
), document.getElementById('app'))
このエラーはコンソールに書き込まれます:index.js:
キャッチされないReferenceError:ReactDOMが定義されていません
私は本当に何をすべきかわかりません。これまでのところ、エラーなしですべての学習を続けました。ここで、私は何をすべきかわからない。
ReactDOM
はレンダリングにMain
を使用しているため、Main.js
ではなくApp.jsx
にReactDOM
をインポートする必要があります。
また、JSXを使用するすべてのファイルにReact
をインポートする必要があります。
最後に、react-router
インポートもMain
にも配置します。
インポートが機能する方法は、必要なものをインポートすることです必要な場所で。 1つのファイルに一度インポートして、他のファイルで使用するだけでは不十分です。
Main.js
を次のように変更します
import ReactDOM from 'react-dom'
import React from 'react'
import { Router, Route, browserHistory, IndexRoute } from 'react-router'
ReactDOM.render((
<Router history = {browserHistory}>
<Route path = "/" component = {App}>
<IndexRoute component = {Home} />
<Route path = "home" component = {Home} />
<Route path = "about" component = {About} />
<Route path = "contact" component = {Contact} />
</Route>
</Router>
), document.getElementById('app'))
1)このコマンドで「npm install --save react-router-dom」をインストールします。 2)App.jsxを次のように変更します
import React from 'react';
import { Switch, Route, Link} from 'react-router-dom';
class App extends React.Component {
render() {
return (
<div>
<Header/>
<Content/>
</div>
);
}
}
class Header extends React.Component {
render() {
return (
<header>
<nav>
<ul>
<li><Link to='/'>Home</Link></li>
<li><Link to='/about'>About</Link></li>
<li><Link to='/contact'>Contact</Link></li>
</ul>
</nav>
</header>
);
}
}
class Content extends React.Component {
render() {
return (
<main>
<Switch>
<Route exact path='/' component={Home}/>
<Route path='/about' component={About}/>
<Route path='/contact' component={Contact}/>
</Switch>
</main>
);
}
}
class Home extends React.Component {
render() {
return (
<div>
<h1>Home...</h1>
</div>
);
}
}
class About extends React.Component {
render() {
return (
<div>
<h1>About...</h1>
</div>
);
}
}
class Contact extends React.Component {
render() {
return (
<div>
<h1>Contact...</h1>
</div>
);
}
}
export default App;
4)main.jsを次のように変更します
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';
import {HashRouter} from 'react-router-dom';
ReactDOM.render((
<HashRouter>
<App />
</HashRouter>
), document.getElementById('app'))
このエラーは、入力ミスがある場合にも発生します
_"import ReactDOM from "react-dom";"
_
そして、_ReactDOM.render....
_の代わりにReactdom.render( <App />, document.getElementById('root'))
を呼び出します
私の場合、問題はReactDom名前空間にありました。それを別のものに変更するだけで機能します!
import XReactDom from 'react-dom'
ReactDOMとMain.jsの他の要素をインポートする必要があります
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, browserHistory, IndexRoute } from 'react-router'
import {App, Home, About,Contact} from './App'
ReactDOM.render((
<Router history = {browserHistory}>
<Route path = "/" component = {App}>
<IndexRoute component = {Home} />
<Route path = "home" component = {Home} />
<Route path = "about" component = {About} />
<Route path = "contact" component = {Contact} />
</Route>
</Router>
), document.getElementById('app'))
App.jsファイルにすべてのコンポーネントが含まれる場合 exportステートメントを変更する必要があります。
fromexport default Component
toexport Component
。
Main.jsでnamed importを使用しますimport {App, Home, About,Contact} from './App'
import React from 'react';
import { Link, browserHistory} from 'react-router'
class App extends React.Component {
render() {
return (
<div>
<ul>
<li>Home</Link>
<li>About</Link>
<li>Contact</Link>
</ul>
{this.props.children}
</div>
)
}
}
export App;
class Home extends React.Component {
render() {
return (
<div>
<h1>Home...</h1>
</div>
)
}
}
export Home;
class About extends React.Component {
render() {
return (
<div>
<h1>About...</h1>
</div>
)
}
}
export About;
class Contact extends React.Component {
render() {
return (
<div>
<h1>Contact...</h1>
</div>
)
}
}
export Contact;
browserHistoryの場合、すべてのルーティングパスで機能するようにサーバーを構成する必要があります 適切 。簡単な方法は、hashHistoryを使用することです。
//import hashHistory
import { Router, Route, hashHistory, IndexRoute } from 'react-router'
...
//pass in Router
<Router history = {hashHistory}> ....
このチューターでは、このコマンド「npm install react-router」はpackage.jsonファイルに保存しないため、コマンドを「npm install --save react-router」に変更して実行します。