有没有其他方法可以在 <Router> 之外使用 <Link> 进行反应?
Is there any alternative to use <Link> outside a <Router> with react?
我正在尝试在 React 路由器外部的组件中使用 Link,但出现错误:
You should not use outside a <Router>
我想呈现我的 App 组件,它包含所有需要的子组件,以及 HeaderIcons 组件,它们必须显示在每个页面的顶部。
HeaderIcons 组件包含指向特定路由的 Link。
这是App中的render方法:
render() {
return (
<Router history={browserHistory}>
<div>
<Route onEnter={this.onRouteUpdate.bind(this)} exact path="" component={Configration} />
<Route onEnter={this.onRouteUpdate.bind(this)} path="/PersonalData" component={Headerlayout} />
</div>
</Router>
);
}
onRouteUpdate(routerState) {
window.scrollTo(0, 0);
sendLocation(routerState.location);
}
ReactDom.render(<App />, document.getElementById("content"));
ReactDom.render(<HeaderIcons />, document.getElementById("configuration_icons"));
这是 HeaderIcons 中的 Link:
<Link
to="/PersonalData"
className="icon"
onMouseOver={this.onmouseoverHandler}
onMouseOut={this.onmouseooutHandler}>
<img src="/static/images/user.png" alt="User" />
</Link>
有没有办法用 React Router v4 实现这个?
您可能希望按照下一种方法构建您的应用程序。 (使用 React-Router)
import { BrowserRouter, Switch, Route } from 'react-router-dom';
// in render method of your App component
<BrowserRouter>
<div className="app">
<HeaderComponentWithLinks> // <- see it under BrowserRouter component
<div className="content">
<Switch>
<Route exact path="/" component={HomePage} />
<Route path="/about" component={AboutPage}/>
</Switch>
</div>
</div>
</BrowserRouter>
现在您将不会看到错误。
我正在尝试在 React 路由器外部的组件中使用 Link,但出现错误:
You should not use outside a
<Router>
我想呈现我的 App 组件,它包含所有需要的子组件,以及 HeaderIcons 组件,它们必须显示在每个页面的顶部。 HeaderIcons 组件包含指向特定路由的 Link。
这是App中的render方法:
render() {
return (
<Router history={browserHistory}>
<div>
<Route onEnter={this.onRouteUpdate.bind(this)} exact path="" component={Configration} />
<Route onEnter={this.onRouteUpdate.bind(this)} path="/PersonalData" component={Headerlayout} />
</div>
</Router>
);
}
onRouteUpdate(routerState) {
window.scrollTo(0, 0);
sendLocation(routerState.location);
}
ReactDom.render(<App />, document.getElementById("content"));
ReactDom.render(<HeaderIcons />, document.getElementById("configuration_icons"));
这是 HeaderIcons 中的 Link:
<Link
to="/PersonalData"
className="icon"
onMouseOver={this.onmouseoverHandler}
onMouseOut={this.onmouseooutHandler}>
<img src="/static/images/user.png" alt="User" />
</Link>
有没有办法用 React Router v4 实现这个?
您可能希望按照下一种方法构建您的应用程序。 (使用 React-Router)
import { BrowserRouter, Switch, Route } from 'react-router-dom';
// in render method of your App component
<BrowserRouter>
<div className="app">
<HeaderComponentWithLinks> // <- see it under BrowserRouter component
<div className="content">
<Switch>
<Route exact path="/" component={HomePage} />
<Route path="/about" component={AboutPage}/>
</Switch>
</div>
</div>
</BrowserRouter>
现在您将不会看到错误。