こんなケースを想定してみる
ページの検索フォームに入力して検索ボタンをクリックすると AJAX で検索用 API を実行する。この時に、検索パラメータを URL のクエリパラメータとして URL へ反映することはできるのか?
また、ブラウザでの戻る、進むをクリックした時も、検索結果をページに表示するのはもちろん、 URL クエリ引数や検索フォームに検索キーワードを反映させたい。
実装方法まとめ
以下、 Vue.js 2 (Options API) での勘所です。 Compotision API でもポイントは同じで、メソッドを適宜置き換えてください。どちらの実装例も本記事にあるので、具体例を参考にするのも、良いと思います。
- ページ初回表示時は
created
メソッド内でリソースサーバからデータ取得を行う。
- 検索ボタンをクリックしたら自分のページへ URL クエリ引数つきで Vue Router の
push
を行う。例えば this.$router.push({ name: "AboutA, query: { base: "JPY" } })
となる。これにより beforeRouteUpdate
メソッドが実行され、ここでリソースサーバからデータ取得を行う。
- リソースサーバからデータ取得を行う処理 (メソッド) では次を気をつけると良い。
- 引数として、クエリパラメータを受け取る。
- メインの処理 (リソースサーバからのデータ取得) 以外に、検索フォームへ対応する URL クエリ引数の値を設定する、などの処理を行う。
読むべき公式ページ
これらの Vue Router の公式ページをしっかりと読み込んで理解できれば、本ページでやりたいことは実現できました。
コード例