私は現在、WordPress REST APIとvue-routerを使用して、小さな単一ページサイトのページ間を移行しています。ただし、REST APIを使用してサーバーにAJAX呼び出しを行うと、データはロードされますが、ページが既にレンダリングされた後にのみ表示されます。最初のvue.js/vue-routerの負荷でサーバー側のデータをすべてロードする方法は?
vue-router documentationは、各経路をナビゲートする前後にデータをロードする方法についての洞察を提供しますが、初期ページのロード時にすべてのルートとページのデータをロードし、データをロードする必要性を巡ってルートがアクティブになるたびに
acf
プロパティにデータをロードしてから.vue
ファイルコンポーネント内でthis.$parent.acfs
を使用してアクセスしています。
main.jsルータコード:
const router = new VueRouter({
routes: [
{ path: '/', component: Home },
{ path: '/about', component: About },
{ path: '/tickets', component: Tickets },
{ path: '/sponsors', component: Sponsors },
],
hashbang: false
});
exports.router = router;
const app = new Vue({
router,
data: {
acfs: ''
},
created() {
$.ajax({
url: 'http://localhost/placeholder/wp-json/acf/v2/page/2',
type: 'GET',
success: function(response) {
console.log(response);
this.acfs = response.acf;
// this.backgroundImage = response.acf.background_image.url
}.bind(this)
})
}
}).$mount('#app')
Home.vueコンポーネントコード:
export default {
name: 'about',
data() {
return {
acf: this.$parent.acfs,
}
},
}
任意のアイデア?
私は 'router.beforeEach()'を使用している場合、どこでAJAX応答データを保存する必要がありますか? '$ route.params'のようにそれを格納しなければならないルートオブジェクトがありますか? – 10000RubyPools
また、ページ間を行き来するときに複数回ではなく、1回だけデータが読み込まれるようにする方法はありますか? – 10000RubyPools
私はそれにサービスクラスを使います( 'IngredientTypes'など)。彼らはデータを保存し、どのコンポーネントもそれらを使用することができます。データがすでに格納されている場合、別の要求を送信するのではなく、ただちに解決済みの約束を返すだけです。私はまた、理論的にはあなたが何をしているかを達成するのに役立つかもしれない、vuexと呼ばれる国家管理のためのツールがあることを知っていますが、私はそれを使用していないので、 – mingos