Несколько дней пытаюсь добавить SSR на свой Vue. js сайт. Удалось заставить тело работать, но возникла проблема с предварительной выборкой данных. Исходя из этого: https://ssr.vuejs.org/guide/data.html#data -store Я добавил хранилище, и мой компонент использует хранилище для предварительной выборки данных для рендеринга:
Item. vue :
// Server-side only
// This will be called by the server renderer automatically
serverPrefetch () {
// return the Promise from the action
// so that the component waits before rendering
return this.fetchItem(2)
},
// Client-side only
mounted () {
// If we didn't already do it on the server
// we fetch the item (will first show the loading text)
if (!this.item) {
this.fetchItem(3)
}
},
methods: {
fetchItem (param) {
// return the Promise from the action
return this.$store.dispatch('fetchItem', param)
}
}
store. js:
actions: {
fetchItem ({ commit }, id) {
// return the Promise via `store.dispatch()` so that we know
// when the data has been fetched
return axios.get('http://localhost:81/api/blah/' + id).then(item => {
commit('setItem', { id, item });
})
}
},
Не было запроса на серверную часть, поэтому я добавил параметры, чтобы увидеть, какая из них выполняется . Из журналов API видно, что есть только один запрос, но он всегда со стороны клиента: всегда с параметром 3. Когда клиент отключен - все еще нет запроса от серверной части.
Похоже, что serverPrefetch () никогда не выполнялся.
Есть идеи, как заставить его работать?