e0ca6de832
## Documentation / Examples - [x] Make sure the linting passes In line with the PR #27297 which solved issue #27252, this updates the example to also use named functions in order to pass ESLint
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import Layout from '../components/layout'
|
||
import Sidebar from '../components/sidebar'
|
||
|
||
export default function About() {
|
||
return (
|
||
<section>
|
||
<h2>Layout Example (About)</h2>
|
||
<p>
|
||
This example adds a property <code>getLayout</code> to your page,
|
||
allowing you to return a React component for the layout. This allows you
|
||
to define the layout on a per-page basis. Since we're returning a
|
||
function, we can have complex nested layouts if desired.
|
||
</p>
|
||
<p>
|
||
When navigating between pages, we want to persist page state (input
|
||
values, scroll position, etc) for a Single-Page Application (SPA)
|
||
experience.
|
||
</p>
|
||
<p>
|
||
This layout pattern will allow for state persistence because the React
|
||
component tree is persisted between page transitions. To preserve state,
|
||
we need to prevent the React component tree from being discarded between
|
||
page transitions.
|
||
</p>
|
||
<h3>Try It Out</h3>
|
||
<p>
|
||
To visualize this, try tying in the search input in the{' '}
|
||
<code>Sidebar</code> and then changing routes. You'll notice the input
|
||
state is persisted.
|
||
</p>
|
||
</section>
|
||
)
|
||
}
|
||
|
||
About.getLayout = function getLayout(page) {
|
||
return (
|
||
<Layout>
|
||
<Sidebar />
|
||
{page}
|
||
</Layout>
|
||
)
|
||
}
|