在<router>外使用<link />进行反应还有什么选择吗?

时间:2019-05-03 11:09:12

标签: reactjs frontend react-router-v4

我试图在React的Router之外的组件中使用Link,但出现错误:

  

您不应在<Router>

之外使用

我想呈现我的App组件,该组件包含所有必需的子组件以及HeaderIcons组件,这些组件必须显示在顶部的每个页面中。 HeaderIcons组件包含指向特定路由的链接。

这是App中的渲染方法:

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 
    to="/PersonalData"
    className="icon"
    onMouseOver={this.onmouseoverHandler}
    onMouseOut={this.onmouseooutHandler}>
    <img src="/static/images/user.png" alt="User" />
</Link>

有没有办法通过React Router v4实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可能需要遵循下一种方法来构建应用程序。 (使用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>

现在您将不会看到错误。