@dron112

Как задать initialState во Vuex?

1) В mounted я делаю dispatch action, который должен получить данные с firebase
2) Как только он их получает я делаю commit мутации и заношу эти данные в state

Проблема в том, что в devTools (Vue), initialState = полученным данным с сервера, хотя commit мутации которая должна занести эти данные в state идёт ниже.
6027b9965928a963743966.png

Компонент
export default {
    name: 'Home',
    components: {
        Footer, Card, Header
    },
    beforeMount() {
      this.$store.commit('getInitialState', {
        name: '',
        avatar: '',
        fetchDataUser: false
      })
    },
    mounted() {
      this.$store.dispatch('getFlatsAction')
      this.$store.dispatch('getInfoUser')
    },
    computed: {
        getFlats() {
            return this.$store.state.flats.items
        }
    },
    methods: {
        favoriteHandler(id) {
            this.$store.commit('addFavorites', id)
        }
    }
}
</script>


store
const state = {
    admin: {
        name: '',
        avatar: '',
        fetchDataUser: false
    }
}

const actions = {
    async getInfoUser(cxt) {
        cxt.commit('getStartDataUser', {
            name: '',
            avatar: '',
            fetchDataUser: false
        })
        try{
            const response = await fetch('https://houses-881f7-default-rtdb.firebaseio.com/users/admin.json')
            const data = await response.json()

            cxt.commit('getSuccessDataUser', data)

            // if(!cxt.state.admin.fetchDataUser) {
            //     cxt.commit('saveDataAdminLocalStore', data)
            // }
        } catch (e) {
            cxt.commit('getFailureDataUser', e)
        }
    }
}
const mutations = {
getSuccessDataUser(state, payload) {
        state.admin.name = payload.name
        state.admin.avatar = payload.avatar
        state.admin.fetchDataUser = true
    },
}
}


Из моих наблюдений
1) если я делаю скорость интернета меньше то state задаётся правильно
я предполагаю, что это из-за того что при медленном интернете mouted() наступает позже и следовательно позже приходят данные с сервера, но почему при обычной скорости так не работает я не понимаю
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы