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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4