peach a19a732be8 commit message | 2 years ago | |
---|---|---|
.. | ||
dist | 2 years ago | |
types | 2 years ago | |
LICENSE | 2 years ago | |
README.md | 2 years ago | |
package.json | 2 years ago |
yarn add vue-client-only
This project is previously known as vue-no-ssr, switch to 1.x branch for the old docs.
<template>
<div id="app">
<h1>My Website</h1>
<client-only>
<!-- this component will only be rendered on client-side -->
<comments />
</client-only>
</div>
</template>
<script>
import ClientOnly from 'vue-client-only'
export default {
components: {
ClientOnly
}
}
</script>
Use a slot or text as placeholder until <client-only />
is mounted on client-side.
eg, show a loading indicator.
<template>
<div id="app">
<h1>My Website</h1>
<!-- use slot -->
<client-only>
<comments />
<comments-placeholder slot="placeholder" />
</client-only>
<!-- or use text -->
<client-only placeholder="Loading...">
<comments />
</client-only>
</div>
</template>
<script>
import ClientOnly from 'vue-client-only'
export default {
components: {
ClientOnly
}
}
</script>
By default the placeholder will be wrapped in a div
tag, however you can use placeholderTag
prop to customize it:
<client-only placeholder="loading" placeholder-tag="span">
<comments />
</client-only>
And you get:
<span class="client-only-placeholder">
loading
</span>
If prop placeholder
is an empty string (or null
) and no placeholder
slot is found, then <client-only>
will render the Vue placeholder element <!---->
instead of rendering the placholder-tag
during SSR render.
yarn install
# Run example
yarn example
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature
vue-client-only © egoist, Released under the MIT License.
Authored and maintained by egoist with help from contributors (list).
egoist.moe · GitHub @egoist · Twitter @_egoistlily