2017-09-27 2 views
0

をリダイレクトして、ホーム・ページにリダイレクト:Vuex状態は、値がint型vuexストアを設定し、私は、ユーザーがログインするには、このメソッドを持っているVue.jsで

login: function() { 
      axios.post(this.BASE_URL + "/login", { 
      username: this.username, 
      password: this.password, 
      }).then((res) => { 
       this.$store.commit('setIsAuthenticated', true); 
       this.$store.commit('setToken', res.data.token); 
       this.$store.commit('setPhoto', res.data.photo); 
       this.$store.commit('setUsername', res.data.username); 
       window.location.href = '/home'; //<-The problem  
      } 

例変異:

setToken: function (state, token) { 
    state.token = token; 
    }, 
setUsername: function (state, username) { 
    state.username = username; 
}, 
App.vue(ルートコンポーネント)で

、私は計算された値としてストアから値を得る:

computed: { 
    isAuthenticated() { 
    return this.$store.state.isAuthenticated; 
    }, 

    token() { 
     return this.$store.state.token; 
    } , 

私がwindow.location.href = '/home';をコメントアウトすると、Vue.jsコンソールにログインが成功し、値がストアに設定されていますが、ページが/homeにリダイレクトされるとすぐに、すべてのストア値が空になります。 なぜこれが起こり、どうやって解決するのだろうか?

UPDATE: 私はこのようroutes.jsでVUE-ルータを使用しています:

import webLogin from './components/webLogin.vue'; 
import showAll from './components/showAll.vue'; 

export default [ 
    {path:'/', component: showAll }, 
    {path:'/add', component: addJoke } , 
    {path: '/login', component: webLogin}, 
] 
+0

あなたはVueのルータを使用していますか? – str

+0

はい私はvueルータを使用します。 – Karlom

+0

'window.location.href'はまったく新しいページを読み込みます。データがページ要求を超えて利用可能になる必要がある場合は、そのデータをどこかに保持する必要があります。私は 'localStorage'と今のところ行くつもりです – Phil

答えて

2

Vuex状態はメモリに保持されます。 window.location.hrefでリダイレクトすると、ページ全体が読み込まれ、現在の状態がパージされます。あなたのルート名がある場合たとえば、あなたのナビゲーションhttps://router.vuejs.org/en/

を行うためにVueのルータを使用する必要がHomeあなたは次のようにリダイレクトすることができます。

this.$router.push({ name: 'Home' }); 
+0

を試してみてください。vue routerを使ってリダイレクトする方法を詳しく教えてください私のコードの文脈では? – Karlom

+2

@Karlom https://router.vuejs.org/en/essentials/navigation.html – str

+1

あなたのルートを設定する方法がわからない、私の答えを編集しました。 –

関連する問題