mirror of
https://github.com/nuxt/nuxt.git
synced 2024-12-01 18:07:22 +00:00
docs: document <ClientOnly>
and <NuxtLink>
(#1856)
This commit is contained in:
parent
8e12394e2d
commit
3e1239d8c7
@ -83,6 +83,40 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## `<ClientOnly>` Component
|
||||||
|
|
||||||
|
Nuxt provides the `<ClientOnly>` component for purposely rendering a component only on client-side. To import a component only on the client, register the component in a client-side only plugin.
|
||||||
|
|
||||||
|
```html{}[pages/example.vue]
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<Sidebar />
|
||||||
|
<ClientOnly>
|
||||||
|
<!-- this component will only be rendered on client-side -->
|
||||||
|
<Comments />
|
||||||
|
</ClientOnly>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
|
||||||
|
Use a slot as fallback until `<ClientOnly>` is mounted on client-side.
|
||||||
|
|
||||||
|
```html{}[pages/example.vue]
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<Sidebar />
|
||||||
|
<ClientOnly>
|
||||||
|
<!-- this component will only be rendered on client-side -->
|
||||||
|
<Comments />
|
||||||
|
<template #fallback>
|
||||||
|
<!-- this will be rendered on server-side -->
|
||||||
|
<p>Loading comments...</p>
|
||||||
|
</template>
|
||||||
|
</ClientOnly>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
|
||||||
## Library Authors
|
## Library Authors
|
||||||
|
|
||||||
Making Vue component libraries with automatic tree-shaking and component registration is super easy ✨
|
Making Vue component libraries with automatic tree-shaking and component registration is super easy ✨
|
||||||
|
@ -46,11 +46,41 @@ Navigating to `/users-admins/123` would render:
|
|||||||
admins 123
|
admins 123
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Navigation
|
||||||
|
|
||||||
|
To navigate between pages of your app, you should use the `<NuxtLink>` component. This component is included with Nuxt and therefore you don't have to import it like you do with other components. It is similar to the HTML `<a>` tag except that instead of using a `href="/about"` you use `to="/about"`. If you've used `vue-router` before, you can think of `<NuxtLink>` as a replacement of `<RouterLink>`
|
||||||
|
|
||||||
|
A simple link to the `index.vue` page in your `pages` folder:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<NuxtLink to="/">Home page</NuxtLink>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
|
||||||
|
The `<NuxtLink>` component should be used for all internal links. That means for all links to the pages within your site you should use `<NuxtLink>`. The `<a>` tag should be used for all external links. That means if you have links to other websites you should use the `<a>` tag for those.
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>Home page</h1>
|
||||||
|
<NuxtLink to="/about">
|
||||||
|
About (internal link that belongs to the Nuxt App)
|
||||||
|
</NuxtLink>
|
||||||
|
<a href="https://nuxtjs.org">External Link to another page</a>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
|
||||||
|
::alert{type="info"}
|
||||||
|
If you want to know more about `<RouterLink>`, read the [Vue Router documentation](https://next.router.vuejs.org/api/#router-link) for more information.
|
||||||
|
::
|
||||||
|
|
||||||
## Nested Routes
|
## Nested Routes
|
||||||
|
|
||||||
We provide a semantic alias for `RouterView`, the `NuxtChild` component, for displaying the children components of a [nested route](https://next.router.vuejs.org/guide/essentials/nested-routes.html).
|
We provide a semantic alias for `RouterView`, the `<NuxtChild>` component, for displaying the children components of a [nested route](https://next.router.vuejs.org/guide/essentials/nested-routes.html).
|
||||||
|
|
||||||
### Example
|
Example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
-| pages/
|
-| pages/
|
||||||
@ -59,36 +89,7 @@ We provide a semantic alias for `RouterView`, the `NuxtChild` component, for dis
|
|||||||
---| parent.vue
|
---| parent.vue
|
||||||
```
|
```
|
||||||
|
|
||||||
To display the `child.vue` component, simply put the `<NuxtChild>` component inside the `parent.vue` component:
|
This file tree will generate these routes:
|
||||||
|
|
||||||
```html{}[pages/parent/child.vue]
|
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<h3>child.vue</h3>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
```
|
|
||||||
|
|
||||||
```html{}[pages/parent.vue]
|
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<h1>parent.vue</h1>
|
|
||||||
<NuxtChild />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<!-- output -->
|
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<h1>parent.vue</h1>
|
|
||||||
<div>
|
|
||||||
<h3>child.vue</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
```
|
|
||||||
|
|
||||||
The example file tree above should generate these routes:
|
|
||||||
|
|
||||||
```js
|
```js
|
||||||
[
|
[
|
||||||
@ -106,3 +107,14 @@ The example file tree above should generate these routes:
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To display the `child.vue` component, you have to insert the `<NuxtChild>` component inside `pages/parent.vue`:
|
||||||
|
|
||||||
|
```html{}[pages/parent.vue]
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>I am the parent view</h1>
|
||||||
|
<NuxtChild :foobar="123" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
@ -10253,10 +10253,10 @@ std-env@^2.2.1, std-env@^2.3.0, std-env@^2.3.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ci-info "^3.1.1"
|
ci-info "^3.1.1"
|
||||||
|
|
||||||
std-env@^3.0.0:
|
std-env@^3.0.1:
|
||||||
version "3.0.0"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.0.tgz#8dbd16bd2aadc18992072e2f5839e897f4ee2733"
|
resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182"
|
||||||
integrity sha512-GoFEqAGzhaexp/T01rIiLOK9LHa6HmVwEUyeU4cwdSnOhfxpw9IMeAFi44SHWbCErEs29qEh7vAOUbtUmoycjA==
|
integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==
|
||||||
|
|
||||||
stream-browserify@^2.0.1:
|
stream-browserify@^2.0.1:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
|
Loading…
Reference in New Issue
Block a user