前提・実現したいこと
現在ログイン機能の実装をしております。
ログイン状態に応じてヘッダーの中身を変えたいです。
ログイン前→ Loginボタン&Registerボタン(新規登録画面へ遷移する)
ログイン中→ Logoutボタンのみ
しかし、今の実装ですとログアウトをしてもLogoutボタンが表示されており、ログアウトが正しく行われていないようです。
おそらくrouter-link内のv-on(@click)にてクリックイベントが発火していないことが原因だと思いますが、解決が難しかったため、ご教示頂けますと幸いです。
発生している問題・エラーメッセージ
エラーは発生していません。
該当のソースコード
vue.js
1//vue.js 2 3<template> 4 <nav class="navbar navbar-expand-md navbar-dark bg-dark"> 5 <ul class="navbar-nav mr-auto"> 6 <li class="nav-item"> 7 <router-link to="/" class="nav-link">Home</router-link> 8 </li> 9 </ul> 10 11 <ul class="navbar-nav my-2 my-lg-0"> 12 <!-- ログイン済みなら表示 --> 13 <template v-if = "auth"> 14 <li class="nav-item"> 15 <router-link to="/login" class="nav-link" @click="logout">Logout</router-link> 16 </li> 17 </template> 18 <!-- 未ログインなら非表示 --> 19 <template v-if="!auth"> 20 <li class="nav-item"> 21 <router-link to="/login" class="nav-link">Login</router-link> 22 </li> 23 <li class="nav-item"> 24 <router-link to="/register" class="nav-link">Register</router-link> 25 </li> 26 </template> 27 </ul> 28 </nav> 29</template> 30 31<script> 32import { computed } from "vue" 33import { useStore } from "vuex" 34import { useRouter } from "vue-router" 35import axios from "axios" 36 37export default { 38 name: "Nav", 39 setup() { 40 const store = useStore() 41 const router = useRouter() 42 const auth = computed(() => store.state.auth) 43 44 //async 非同期関数 45 const logout = async () => { 46 alert("通過") //検証用(現在ここが表示されません) 47 48 axios.post('logout', {}) 49 store.dispatch('setaAuth', false) 50 router.push('/login') 51 } 52 return { 53 auth 54 } 55 } 56} 57</script>
index.ts
1//index.ts 2//vuexででログイン状態を管理しています 3 4import { Commit, createStore } from 'vuex' 5 6export default createStore({ 7 state: { 8 auth: false 9 }, 10 mutations: { 11 setAuth: (state: { auth: boolean }, auth: boolean) => state.auth = auth 12 }, 13 actions: { 14 setAuth: ({commit}: { commit: Commit }, auth: boolean) => commit('setAuth', auth) 15 }, 16 modules: { 17 } 18})
試したこと
・@clickをv-onの表記に変更してみる
補足情報(FW/ツールのバージョンなど)
@vue/cli 4.5.13
以下のサイトを参考にしました▼
Go言語とVue.jsで作るユーザー認証アプリ~フロントエンド開発編

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/29 07:04 編集
2021/09/29 07:24