17
22

More than 5 years have passed since last update.

【Vue.js】リストのデータを Local Storage で永続化する方法

Last updated at Posted at 2017-12-10

screencast20171210225705.gif

Vue.js で Local Storage を使う場合 vue-ls というライブラリがあるのですが、ボタンクリックでリスト内のデータ追加、削除を行なうような場合にはその都度リストデータを Local Storage に保存してしまえば良いのではないかと思います。

環境

  • Vue.js 2.5.9

処理

export default {
  data() {
    return {
      items: [],
      json: ''
    }
  },
  mounted() {
    this.items = JSON.parse(localStorage.getItem('items')) || [];
  },
  methods: {
    addItem() {
      this.items.push('item_' + this.items.length);
      this.setItems();
    },
    deleteAllItems() {
      this.items = [];
      this.setItems();
    },
    setItems() {
      localStorage.setItem('items', JSON.stringify(this.items));
    }
  }
}

mounted()

マウントしたときに Local Storage からデータを取得しています。このとき、Storage にデータが無ければ空の配列を代入しています。

もともと該当のプロパティは配列で初期化しているのでちょっと違和感のある処理ですが、 if でやると冗長になるかと思ってこれにしました。

setItems()

配列を JSON テキストにして Local Storage に保存しています。

データの変更を行ったときには必ず行う処理なのでメソッドにしておきました。

addItem(), deleteAllItems()

データの操作です。

配列を変更した後で配列を JSON 化、JSON テキストを Local Storage に登録しています。

Vue.js はリストを管理する系のアプリを作るのが簡単ですね。ページをリロードしてもデータが失われないようにすることで、結構いろいろなツールを作れそう。

17
22
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
17
22