programing

VueJ에서 디스패치 및 커밋 완료 후에만 경로 트리거s

goodsources 2022. 10. 1. 15:17
반응형

VueJ에서 디스패치 및 커밋 완료 후에만 경로 트리거s

이메일과 패스워드를 취득한 후, 상점의 액션에 전달하는 폼을 가지고 있습니다.userSignIn

SignIn.vue:

onSubmit () {
    if (this.$refs.form.validate()) {
    const user = {
        email: this.email,
        password: this.password
    }
    this.$store.dispatch('userSignIn', user)
        .then(() => {
            this.$router.push('/')
        }).catch(err => {
            console.log(err)
        })
    }
}

매장 내에는userSignIn이런 행동

store.syslog 액션:

userSignIn ({commit, getters}, payload) {
    getters.Api.post(`user/signin`, {
        email: payload.email,
        password: payload.password
    }).then(res => {
        commit('userSignIn', res.data.token)
    }).catch(err => {
        console.log(err)
    })
}

라우팅(this.$router.push('/'))는 다음 시간 이후에 수행해야 합니다.userSignIn커밋()commit('userSignIn', res.data.token)그러나 실제로 발생하는 라우팅은 커밋 전에 트리거되며 사용자 토큰이 아직 설정되지 않았기 때문에 결과 및 오류가 발생합니다.

무언가를 트리거하는 방법(이 경우this.$router.push('/'))가 완료된 후에만dispatch그리고.commit그 안에?

약속을 돌려준 것이 효과가 있었다.

userSignIn ({commit, getters}, payload) {
    return getters.Api.post(`user/signin`, {
        ......
    })

언급URL : https://stackoverflow.com/questions/49113023/triggering-a-route-only-after-dispatch-and-commit-completed-in-vuejs

반응형