@nikkon82

Как получить доступ к объекту, который есть, но приложение его не видит?

Есть страница с данными user'a, которые получаем через getUser.name

Все данные подгружаются норм, но вот есть вложенный объект (парент юзера), доступ к данным которого получаем: getUser.parent_user.id
vue devtools видит parent_user у getUser, на странице данные этого объекта подгружаются, но в консоли появляется ошибка:
Error in render: "TypeError: can't access property "id", _vm.getUser.parent_user is undefined"

Почитал, что подобное происходит из-за асинхронности и решается добавлением к блоку v-if:
v-if="getUser.parent_user" - ошибка пропадает в консоли, но доступ к объекту getUser.parent_user по прежнему отсутствует, как получить к ним доступ?

Вот код:
<template>
    <b-container>
        <b-card>
            <b-card-text>Email: {{ getUser.email }} disabled</b-card-text>
            <b-card-text>
                Mentor:
                <router-link :to="{ name: 'show-user', params: { id: getUser.parent_user.id } }"
                             class="card-link"
                >
                    {{ getUser.parent_user.name }} {{ getUser.parent_user.last_name }}
                </router-link>
            </b-card-text>            
        </b-card>
    </b-container>
</template>

<script>
import { mapActions, mapGetters } from "vuex";

export default {
    name: 'ShowUser',
    computed: {
        ...mapGetters(['getUser']),
    },
    methods: {
        ...mapActions(['showUser']),
    },
    mounted() {
        this.showUser(this.$route.params.id)
    }
}
</script>


А это из store:
import * as userService from '../../services/user_service'

export default {
    state: {
        user:[]
    },
    getters: {
        getUser(state) {
            return state.user
        }
    },
    actions: {        
        async showUser({commit}, userId) {
            const user = await userService.loadOneUser(userId)
            commit('SET_USER', user.data)
        }
    },
    mutations: {
        SET_USER(state, user) {
            state.user = user
        }
    }
}
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы