一部コードが長くなるため簡略させていただいております。
問題
router-linkやrouter.pushを使うことでvue-router
で定義したパスに遷移することができると思います。
しかしこれはどちらかというと遷移というより、
DOMを書き換える(router-viewタグを記載している箇所に描画)といった挙動に近いと思います。
以下のコードのようにそのままrouter.pushをした場合は遷移前の画面が残ってしまうため、v-ifディレクティブを用いてis_showというプロパティがfalseになった場合は遷移前の画面を消すという処理を記載しています。
しかしrouter-linkを使った場合、このis_showプロパティをどうやったらfalseにできるかがわかりません。
router.pushの場合はjs内で遷移前にfalseにするというコードを記載できるのですが、router-linkの場合はどうすれば良いか分からず仕舞いです。
またこのようなv-ifディレクティブを使わずとも遷移前の画面を消す良い方法があるのでしょうか?
ご回答いただけると幸いです。
コード
<template> <div> <router-link to="/sign_up">登録</router-link> <div id="login" v-if = "is_show"> <el-form> <!-- 省略 --> <el-button type="primary" @click="onSubmit" >ログイン</el-button> </el-form> </div> <router-view></router-view> </div> </template> <script> import axios from 'axios'; export default{ data: function() { return{ //省略 is_show: true } }, methods: { onSubmit: function() { axios .post("http://localhost:3000/api/v1/auth/sign_in", { //省略 }) .then((response) => { this.is_show = false; this.$router.push({ path: '/user_page' }); }) } } } </script>
回答1件
あなたの回答
tips
プレビュー