39
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Nuxt.jsでCookieを使って閲覧したデータを取得する方法

Posted at

Nuxt.js専用のモジュールのcookie-universal-nuxtを使用

Nuxt.js用のCookieを扱うためのモジュールがあるので、こちらを利用します。

cookie-universal-nuxt

導入

対象のプロジェクト下で

yarn add cookie-universal-nuxt
or
npm install --save cookie-universal-nuxt

nuxt.config.jsの設定

nuxt.config.js
modules: [
    ['cookie-universal-nuxt', { parseJSON: false }]
],

これで設定は完了

取得するデータをキャッシュに保持(set)

今回は取得するデータがあるページへアクセスしたら、キャッシュに記録されるというもの

cookie.vue
export default {
  created() {
    const setCached = 
    {
      title: 'こんにちは!タイトルをキャッシュします',
      content: 'こんにちは!内容をキャッシュします。'
    }
    this.$cookies.set('article01', setCached, {
      path: '/',
      maxAge: 60 * 60 * 24 * 7
    })
  }
}

setCachedにページ内のデータをセットする。
今回は直接入力しているが、apiから取得したデータ等をセットしたり、dataプロパティと紐づけてもよい

this.$cookie.setでクッキーに入るNameをarticle01に指定し、valueをセットする。

cookieを保持するpathと時間を指定する
これでcookieにセットされます。

cookieに保持されているデータを取得(get)

今度は違うページで取得できるようにしてみる。

index.vue
export default {
  data () {
    return {
      article01: this.$cookies.get('article01')
    }
  },
  computed: {
    article() {
      let post
      if (this.article01) {
        post = JSON.parse(this.article01)
      }
      return post
    }
  }
}

取得したいページのdataプロパティへgetした値をセットする
this.$cookie.get('CookieにセットしたName')で値が取得できる

先ほどオブジェクトでValueをセットしたので、parseしてデータを扱えるようにする。

index.vue
<template>
  <div>
    <article v-if="article">
      <h1>{{ article.title }}</h1>
      <p>{{ article.content }}</p>
    </article>
  </div>
</template>

あとはデータがないときには表示されないようにv-ifを設定し、
値を表示する

これでデータをCookieへsetしgetするまでができるようになります。

値は配列にしてもいいし、そのままStringでわたしてもいいし、それぞれ使いやすい形式でいれてください

まとめ

cookie周りの設定が結構簡単にできるので、導入しやすいと思います。

あとはデータの取得周りでエラーがでないように条件分岐等を使っていくといいかなと思います。

数を指定して例えば3つとかを閲覧したページ順に入れつつ更新とかもできるので、直近の閲覧履歴とかデータベースにいれなくても履歴にのこすこともできる点がいいと思った。

39
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?