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

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -