【发布时间】:2017-12-21 12:51:56
【问题描述】:
我正在运行 react-router-dom 4.1.1,我遵循了多个 React Router 指南,甚至做了在我的计算机上运行的 react-router-tutorial(尽管它使用的是 react-router v2 或类似的东西)。当我尝试在一个简单的应用程序上使用 react-router-dom v4 时,我遇到了很多错误。
向下滚动查看当前代码和错误
//index.js
import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter as Router, Route, Switch} from 'react-router-dom';
import createBrowserHistory from 'history/createBrowserHistory'
import App from './components/App';
import About from './components/pages/about';
const customHistory = createBrowserHistory()
ReactDOM.render((
<Router history={customHistory}>
<Switch>
<Route path='/' component={App} />
<Route path='/about' component={About}/>
</Switch>
</Router>
), document.getElementById('root'))
此代码单独工作并呈现我的“应用”组件
但是当我尝试在我的 App 组件中添加一个“链接”组件时,它无法识别它。
//App.js
import React from 'react';
import Header from './Header';
import { Link } from 'react-router-dom'
class App extends React.Component {
render() {
return (
<div className="App">
<Header className="Header" header="Header" />
<main className='main'>
<Link to='about'>About</Link>
</main>
</div>
);
}
}
export default App;
如果我运行它,我会收到错误:
TypeError:无法读取未定义的属性“历史” 在 Link.render (/Users/Ryan/Desktop/df/grnd/node_modules/react-router-dom/Link.js:76:35) 在 /Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactCompositeComponent.js:795:21 在 measureLifeCyclePerf (/Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactCompositeComponent.js:75:12) 在 ReactCompositeComponentWrapper._renderValidatedComponentWithoutOwnerOrContext (/Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactCompositeComponent.js:794:25) 在 ReactCompositeComponentWrapper._renderValidatedComponent (/Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactCompositeComponent.js:821:32) 在 ReactCompositeComponentWrapper.performInitialMount (/Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactCompositeComponent.js:361:30) 在 ReactCompositeComponentWrapper.mountComponent (/Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactCompositeComponent.js:257:21) 在 Object.mountComponent (/Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactReconciler.js:45:35) 在 ReactDOMComponent.mountChildren (/Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactMultiChild.js:236:44) 在 ReactDOMComponent._createContentMarkup (/Users/Ryan/Desktop/df/grnd/node_modules/react-dom/lib/ReactDOMComponent.js:659:32)
如果我在 App.js 中注释掉“链接”组件,程序会运行并从 index.js 加载“应用程序”。
这只是我收到的许多错误中的一个,因为我试图弄清楚为什么我无法运行它。我还收到错误,其中显示“Route”未定义或“Router”不能嵌套子级等。我发现这个问题是最简单的。
我用于此示例的历史记录取自以下示例: https://reacttraining.com/react-router/web/api/Router/history-object
【问题讨论】:
标签: reactjs react-router switch-statement history