Я пытаюсь создать адаптивный макет Master / Detail с использованием response-router v4, как описано здесь .Код, который он предлагает:
const App = () => (
<AppLayout>
<Route path="/invoices" component={Invoices}/>
</AppLayout>
)
const Invoices = () => (
<Layout>
{/* always show the nav */}
<InvoicesNav/>
<Media query={PRETTY_SMALL}>
{screenIsSmall => screenIsSmall
// small screen has no redirect
? <Switch>
<Route exact path="/invoices/dashboard" component={Dashboard}/>
<Route path="/invoices/:id" component={Invoice}/>
</Switch>
// large screen does!
: <Switch>
<Route exact path="/invoices/dashboard" component={Dashboard}/>
<Route path="/invoices/:id" component={Invoice}/>
<Redirect from="/invoices" to="/invoices/dashboard"/>
</Switch>
}
</Media>
</Layout>
)
Однако я не могу заставить что-то работать на этом основании.Есть несколько вещей, в которых я не уверен:
1) Что это за компонент AppLayout?
2) На какой компонент Layout он ссылается и это важно?
3) Я предполагаю, что тег Media относится к реагирующим медиа?
4) Медиа-запрос = {PRETTY_SMALL} означает что-то вроде медиа-запроса = {{maxWidth: 599}}
5) нигде нет компонента Router, который мне хотя и был нужен
6) нигде нет объектов Link
лучшее, что я придумал до сих пор (в проекте, начатом)с create-реагировать-приложение) это
import Media from "react-media";
import React, { Component } from 'react';
import { Route, Switch, Redirect } from 'react-router-dom';
const data = [
{
id: 1,
to: 'Mr. Smith',
amount: 10
},
{
id: 2,
to: 'Mrs. Jones',
amount: 100
}
]
const InvoicesNav = () => (
<div>
Nav Bar
</div>
)
const Dashboard = () => (
<div>
Dashboard
</div>
)
const Invoice = () => (
<div>
Invoice
</div>
)
const App = () => (
// <AppLayout>
<Route path="/invoices" component={Invoices} />
// </AppLayout>
)
const Invoices = () => (
// <Layout>
<div>
{/* always show the nav */}
<InvoicesNav />
<Media query={{ maxWidth: 599 }}>
{screenIsSmall => screenIsSmall
// small screen has no redirect
? <Switch>
<Route exact path="/invoices/dashboard" component={Dashboard} />
<Route path="/invoices/:id" component={Invoice} />
</Switch>
// large screen does!
: <Switch>
<Route exact path="/invoices/dashboard" component={Dashboard} />
<Route path="/invoices/:id" component={Invoice} />
<Redirect from="/invoices" to="/invoices/dashboard" />
</Switch>
}
</Media>
{/* </Layout> */}
</div>
)
export default App;
Но это все равно на самом деле не делает ничего, что напоминает адаптивный макет Master / Detail и не делает ничего в примерах для реакции-маршрутизатора, насколько я могуувидеть.(