programing

불기지를 설치하다.vuex의 사용자가 영구 루프를 발생시킵니다.

copysource 2022. 7. 21. 22:21
반응형

불기지를 설치하다.vuex의 사용자가 영구 루프를 발생시킵니다.

업데이트: 이 오류는 vuex strict 모드를 사용하도록 설정한 경우에만 발생합니다.

파이어베이스 인증을 사용하여 Vue 애플리케이션을 구축하고 있는데 응용 프로그램이 실패하고 다음 오류 메시지가 표시됩니다.

[Vue warn] :watcher "function ( )에 대한 콜백 오류입니다. { 반환됩니다._data.$state}: "오류: [vuex] 변환 핸들러 외부에 있는 vuex 저장소 상태를 변환하지 않습니다."

오류: [vuex] 변환 핸들러 외부의 vuex 저장소 상태를 변환하지 않습니다.

Uncaughed RangeError: 최대 콜 스택 크기를 초과했습니다.

main.ts 파일의 Vuex 스토어에 사용자를 커밋하면 오류가 발생합니다.

firebase.auth().onAuthStateChanged(user => {
  if (user) {
    store.commit(constants.auth.SET_USER, user) // THIS LINE
    store.commit(constants.auth.SET_AUTHENTICATED, true)
    router.push('/')
  } else {
    store.commit(constants.auth.SET_USER, null)
    store.commit(constants.auth.SET_AUTHENTICATED, false)
    router.push('/signup')
  }
  if (!app) {
    app = new Vue({
      router,
      store,
      render: (h) => h(App),
    }).$mount('#app')
  }
})

제 돌연변이는 이렇습니다.

[constants.auth.SET_USER](state: AuthState, payload: firebase.User): void {
      state.user = payload
}

Vue devtools에서 실제로 변환이 발생하고 사용자가 스토어에 커밋된 것을 알 수 있지만 왜 이 오류가 발생하는지 알 수 없습니다.좀 도와 줄래요?

어플리케이션의 거의 모든 것을 코멘트하려고 했습니다만, 문제의 원인이 되는 것은 이것뿐입니다.

가게user.toJSON()당신의 주(州에서.Firebase 사용자는 vuex 상태로 저장해서는 안 되는 복잡한 개체입니다.

내 생각엔 네가 싸야 할 필요가 있을 것 같아.firebase.auth().onAuthStateChanged에 있어서new Promise.

https://forum.vuejs.org/t/vue-routes-firebase-auth-sync-problem/4470#post2 의 예를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/55228739/setting-firebase-user-in-vuex-results-in-eternal-loop

반응형