Есть ли альтернатива использованию <Link>вне <Router>с реагировать? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь использовать Link в компоненте вне маршрутизатора в React, но я получаю сообщение об ошибке:

Вы не должны использовать вне <Router>

Я хочу отобразить компонент приложения, который содержит все необходимые подкомпоненты, и компоненты HeaderIcons, которые должны отображаться на каждой странице вверху.компонент HeaderIcons содержит ссылку на определенный маршрут.

Это метод рендеринга в приложении:

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>

Есть ли способ добиться этого с помощью активного маршрутизатораv4?

1 Ответ

0 голосов
/ 03 мая 2019

Возможно, вы захотите следовать следующему подходу при структурировании вашего приложения. (С 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>

Теперь вы не увидите ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...