【Nuxt.js】ログインせずにWebStorageを使ってお気に入り機能を実装する

【Nuxt.js】ログインせずにWebStorageを使ってお気に入り機能を実装する

Vue.js

ログイン認証の永続化やカート追加などブラウザの一時的なデータ保存に役立つWebStorageを使ってお気に入り機能の実装の流れをメモしておきます。

vuex-persistedstateのインストール・設定

vuex-persistedstateを使ってWebStorageにVuexのステート情報を保存する方法でやっていきます。package.jsonにvuex-persistedstateを追記し、mpm installコマンドでインストールします。

・package.json

 

インストールしたらpluginsディレクトリ配下にpersistedstate.jsファイルを作成し、以下のように永続化させる情報を設定していきます。

keyはWebStorageにキーとなる文字列を入力し、pathsはVuexのステート情報を保存しているファイル名を入力します。

WebStorageにはlocalStorageとsessionStorageがあります。localStorageはブラウザを閉じてもデータを保持されますが、sessionStorageはブラウザを閉じるとデータは破棄されます。今回はsessionStorageを使用して実装していきます。

・persistedstate.js

 

nuxt.config.jsのpluginsに先ほど作成したファイルパスを追記し、設定完了です。

・nuxt.config.js

 

お気に入りストアを作成する

実際にWebStorageと連携し保存するストアを書いていきます。

今回はお気に入りのIDを保存することで、そのIDに紐づくデータを後から取得できるようにします。

後で呼び出されるようにお気に入り登録した際にIDを格納する処理と削除する処理も書いておきます。

・store/favorite.js

 

お気に入り登録する

お気に入り登録したいページに登録・解除の処理を実装していきます。

まずmapGettersからWebStorageに格納されているお気に入り情報を取得します。既にお気に入り登録されているかどうかの条件判定をし、登録・解除のボタンをそれぞれ出し分けます。

お気に入り登録した情報を表示したい場合は、mapGettersからfavoriteを呼び出しidに紐づいたデータをAPIから取得する感じになります。情報量が少ない場合は、APIからデータを呼び出さずにfavoriteにプロパティを追加してWebStorage(容量5MB)に持っておいても良いと思います。

・pages/sample/index.vue