44
47

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.

Vueでリロードを表現する2つの方法

Last updated at Posted at 2019-07-15

はじめに

jQueryや生のJSでは、ページ内の要素が持っているデータを初期化するのに、よくリロードさせていましたが、Vueだとどう表現すべきなのかやってみました。

1. 変数の初期化

ページ内で使用する変数に初期値を与える事で疑似リロードを表現できます(検索ページのリセットでも使う方法)

例)
<template>
  <p><input v-model="params.text"></p>
  <p class="btn" @click="reset()">リセット</p>
</template>
<script>
export default {
  data: function () {
    return {
      params: {
        text: ''
      }
    }
  },
  methods: {
    reset: function () {
      this.params = {}
    }
  }
}
</script>

ボタンクリック時にparamsを初期化するメソッドを用意することで疑似リロードを表現できます。
ただ、API等でデータを取得している場合やGETでデータを取得している等が初期表示で必要であるとこのメソッドでは対応しきれなくなります。

2. router.goを利用

vue-routerをインストールしている環境であればrouterメソッドが使用できるかと思います。
その中でrouter.goを使用することで想定していたリロードを表現できます。

例)
<template>
  <p><input v-model="params.text"></p>
  <p class="btn" @click="reset()">リセット</p>
</template>
<script>
export default {
  data: function () {
    return {
      params: {
        text: ''
      }
    }
  },
  methods: {
    reset: function () {
      this.$router.go({path: this.$router.currentRoute.path, force: true})
    }
  }
}
</script>

currentRoute.pathで現在のパスを渡す事でリロード処理をしてくれる模様。
vue-routerのAPIリファレンスでは数字を引数としていたgoメソッドですが、オブジェクトを渡せるようなので、他のメソッドでも色々できそうな予感。こういうのどうやって調べるんだろう。。。

以上、リロードを表現する2つの方法でした!

44
47
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
44
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?