揚げログ

karaageの技術開発関連のブログです

store.stateの読み込みは遅延する - Nuxt.js

概要

Nuxt.jsでvuex storeでデータのCRUDを行ってる状況を想定する。

すでにstate.userには他のページか親コンポーネントでの操作(dispatch, commit)で、undefinedではない何らかのObjectが入っている前提とします。

ダメなコード

このコードは動いたり動かなかったりします。(stateの読み込み速度によって結果が変わってしまう)

$store.getters を使っても、同様の症状になると思います。

<template>
    <v-container>
         <p>{{user}}</p>
    </v-container>
<template>

<script>
export default {
  beforeCreated() {
    this.user = this.$store.state.user;
  },
  data(){
    return {
      user: Object
    }
}
</script>

→ Error! user is undefined

ちゃんと動くコード

stateのLoad状況によって、表示を切り替え、undefinedエラーを防ぎます。

<template>
    <v-container>
         <p>{{user}}</p>
    </v-container>
<template>

<script>
export default {
  computed: {
    user() {
      const user = this.$store.state.user
        if (!!user) {
         return user;
      }
    else {
      return {};
    }
  }
}
</script>