These are chat archives for dev-ua/reactjs

27th
May 2017
Ivan Daniluk
@divan
May 27 2017 11:16

А помогите кто-нибудь разобраться с react-router. В одних туториалах пишут примеры вроде такого:

<Route path='/' component={App}>
   <Route path="page1" component={Page1}>
   <Route path="page2" component={Page2}>
</Route>

но у меня такой пример ругается матом. (Uncaught Error: React.Children.only expected to receive a single React element child.)
Собственно я пытаюсь сгруппировать public и protected роуты.

Evgeniy Vashchuk
@evashchuk
May 27 2017 11:20
Подивись яка в тебе версія роутера. Є приклади на 3 і 4 версію, а вони абсолютно різіні
Ivan Daniluk
@divan
May 27 2017 11:30
Так, в мене 4-та.
А як можна зробити щось подібне з 4-ю версією?. У доках не бачу такого.
Mortex
@mbalabash
May 27 2017 14:52
@divan Привет. Тебе нужно вернуть однин элемент. Используй компонент Switch из того же react-router-dom.
import {BrowserRouter as Router, Route, Switch} from 'react-router-dom'
<Router>
    <Switch>
        <Route exact path="/" component={App}/>
        <Route path="/page1" component={Page1}/>
        <Route path="/page2" component={Page1}/>
        <Route component={NotFound}/>`
    </Switch>
</Router>
Ivan Daniluk
@divan
May 27 2017 15:36
@mbalabash спасибо, но это не совсем то, что мне нужно. Компонент App содержит всякие штуки вроде тулбара, сайдбара и прочее - что общее для остальных компонентов (Page1, Page2). Он является как бы "родителем" этих компонентов, и если я, скажем, запрещаю доступ к App (через onEnter=()), то остальные роуты автоматически должны быть тоже запрещены.