Я пытаюсь извлечь <Switch> с выходом <Route> в другой модуль.
URL-адрес изменяется на новый путь, а содержимое - нет (только когда я обновляю его, изменяется).
Я пытаюсь понять, что мне не хватает.
ИЗМЕНИТЬ:живой пример:https://stackblitz.com/edit/separated-switch-module
рабочий пример:
<BrowserRouter>
<div>
<Link to = "/"> Home </Link>
<Link to = "contacts"> Contacts </Link>
<Switch>
<Route exact path = "/" component = {Home} />
<Route path = "/contacts" component = {Contacts} />
</Switch>
</div>
</BrowserRouter>
неудачный пример:
<BrowserRouter>
<div>
<Link to = "/"> Home </Link>
<Link to = "contacts"> Contacts </Link>
<SwitchedRoutes/>
</div>
</BrowserRouter>
ИЗМЕНИТЬ:
import React from "react";
import { observer, inject } from "mobx-react";
import { Switch, Route } from "react-router-dom";
@inject('pageStore')
@observer
export default class extends React.Component {
render(){
const {
home,
contacts
} = this.props.pageStore.pages;
return (
<Switch>
<Route exact path = {home.path} render = {()=> <Home />} />
<Route path = {contacts.path} render = {()=> <Contacts/>} />
</Switch>
)
}
}
Привет, я обновил пост с помощью компонента SwitchedRoutes
Вы импортировали Route в свой файл SwitchedRoutes?
Да, извините, здесь его не было во фрагменте, но я исправил
Я не вижу причин, по которым это не сработает. Можете сделать пример здесь?
покажите, как вы его импортируете, где вы используете <SwitchedRoutes />
в чем ошибка? Я полагаю Cant use <Switch> oustide of <Router>?
@Colin здесь: stackblitz.com/edit/separated-switch-module
@Omar вот живой пример: stackblitz.com/edit/separated-switch-module
@MilosMosovsky у меня ошибок нет, вот живой пример: stackblitz.com/edit/separated-switch-module



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку react-router v4 немного изменил API, вам необходимо предоставить всем базовым компонентам, таким как Switch, Link и т. д., Контекст маршрутизатора. (Что-то вроде подписчика на маршрутизацию), как только вы отключаете модуль от отдельного файла, он теряет контекст.
просто добавьте это в SwitchedRoutes.js
import React from 'react';
import { withRouter } from 'react-router'
import {Switch, Route} from 'react-router-dom';
import {inject, observer} from 'mobx-react';
const Home = () => <h1>Home</h1>;
const Contacts = () => <h1>Contents</h1>;
const switchedRouter = inject('store')(observer(props => {
const {home, contacts} = props.store.routes;
return(
<Switch>
<Route exact path = {home.path} component = {Home}/>
<Route path = {contacts.path} component = {Contacts}/>
</Switch>
);
}));
export default withRouter(switchedRouter)
мы просто обернули компонент withRouter HoC, который предоставляет нам правильный контекст реактивного маршрутизатора.
https://separated-switch-module-j92psu.stackblitz.io
Черт, добрался до меня. В любом случае исправьте здесь.
вы можете показать компонент SwitchedRoutes?