javascript - Async data change when using server side render in Vue -
i want use vue in server side rendering, content data inside template have request other cms server.
<template> <h1>{{ content.heading }}</h1> </template> <script> export default { data() { return { content: { heading: '' } } }, created() { axios .get(content_resource) .then(content => this.content = content); } } </script> due axios.get async request, server send empty content before request complete.
use curl request content:
curl 'url'; # got <h1></h1>, # want <h1>something here</h1> how make sure can render cms content data in server side?
according vue-hackernews-2.0 example, src/server-entry.js detect prefetch function in current route component.
so, add prefetch function in current route component , save data vuex store.
<template> <h1>{{ content.heading }}</h1> </template> <script> const fetchcontent = store => axios .get(content_resource) .then(content => store.dispatch('save_content', content)); export default { computed: { content() { return this.$store.your_content_key_name } }, prefetch: fetchcontent, // server side render beforecreate() { // client side render fetchcontent(this.$store); } } </script>
Comments
Post a Comment