お世話になっております。
Nuxt.jsを使っていて以下の問題に直面しました。
まず起こっていること・試したことを順番に説明致します。
①nuxtServerInitでstate.user
をセット
//mutations内にて mutations: { setUser(state, payload) { state.user = {...payload}; } }, //nuxtServerInit内にて const userInfo = { name: 'name' }; commit("setUser", userInfo);
②nuxtServerInit内でstate.userをgetters.getUser
で受け取りコンソール出力→想定通り動作
//getters内にて getters: { getUser: state => state.user }, //nuxtServerInit内にて console.log(getters.getUser); //出力結果 { name: 'name' }
③index.vueでstate.userをthis.$store.getters.getUser
で受け取り表示→上手く動作しない(空オブジェクトが返ってくる)
<template> <div> this page is index.vue userName: {{user}} </div> </template> <script> export default { computed: { user() { return this.$store.getters.getUser; //空オブジェクト{}が返ってくる。 } }, } </script> // {{user}}に {} が表示される。
④そこで試しにstate.user.nameにデフォルトでdefault name
という値を持たせ、index.vueでuser.name
を取得すると上手く動作した
// store/index.jsのstate内にて state: () => ({ user: { name: 'default name' } }), // pages/index.vueにて <template> <div> this page is index.vue userName: {{user.name}} </div> </template> <script> export default { computed: { user() { return this.$store.getters.getUser; } }, } </script> // {{user.name}}で「default name」と表示される。
以上のように、サーバー側でstateのuser.nameを取得できているにも関わらず、クライアント側で取得できない原因が分からず詰まっています。
是非アドバイスなどいただければ幸いです。
回答1件
あなたの回答
tips
プレビュー