Как исправить ошибку "TypeError: Cannot convert undefined or null to object"?
Возникает ошибка Error in mounted hook: "TypeError: Cannot convert undefined or null to object"
и Error in mounted hook: "TypeError: Cannot convert undefined or null to object"
Думал это иза использования Object.keys.
Но, перепроверил на хуке beforeMountданные уже есть, а Object.keys делаю на хуке mounted
<template>
<div class="user-rating">
<el-row>
<el-col :span="20">
<h1 class="user-rating__title">Рейтинг пользователей</h1>
<hr />
<el-table
:data="tableExcessWeight"
header-row-class-name="table-header"
row-class-name="table-rows-name"
:header-cell-style="{ 'background-color': '#ffb572' }"
:cell-style="{ 'background-color': '#ffb5727F' }"
style="width: 100%"
height="100%"
>
<el-table-column label="Аватарка">
<template slot-scope="scope">
<img
v-if="scope.row.imageData"
class="user-rating__avatar"
:src="scope.row.imageData"
/>
<img
v-else-if="scope.row.gender === 'мужской'"
class="user-rating__avatar"
src="../assets/img/icons/avatar-man.jpg"
/>
<img v-else class="user-rating__avatar" src="../assets/img/icons/avatar-woman.jpg" />
</template>
</el-table-column>
<el-table-column label="Возраст">
<template slot-scope="scope">
<p v-if="scope.row.age">{{ scope.row.age }}</p>
<p v-else>Не указан</p>
</template>
</el-table-column>
<el-table-column label="Имя">
<template slot-scope="scope">
<p v-if="scope.row.name">{{ scope.row.name }}</p>
<p v-else-if="scope.row.gender === 'мужской'">Неопознанный кот</p>
<p v-else>Неопознанная кошка</p>
</template>
</el-table-column>
<el-table-column label="e-mail">
<template slot-scope="scope">
{{ scope.row.email }}
</template>
</el-table-column>
<el-table-column prop="sumCalories" label="Потерянно (кал.)"></el-table-column>
<el-table-column prop="sumKg" label="Потерянно (кг.)"> </el-table-column>
</el-table>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
name: 'UserRating',
data() {
return {
// Данные пользователей с избыточным весом (которые сбрасывают)
tableExcessWeight: \[\],
// Данные пользователей с дефицитом веса (которые набирают)
tableDeficitWeight: \[\],
allUsers: \[\],
};
},
methods: {
// Подсчет каллорий сброшенных пользователем за время пользования сервисом
totalCaloriesBurned() {
for (let i = 0; i < this.tableExcessWeight.length; i += 1) {
const userСalories = Object.values(this.tableExcessWeight\[i\].userСalories);
const sumCalories = userСalories.reduce((total, obj) => total + obj.differencePerDay, 0);
this.tableExcessWeight\[i\].sumCalories = `${Math.abs(sumCalories)} кал.`;
this.tableExcessWeight\[i\].sumKg = `${Math.abs(sumCalories / 7700).toFixed(2)} кг.`;
}
for (let i = 0; i < this.tableDeficitWeight.length; i += 1) {
const userСalories = Object.values(this.tableDeficitWeight\[i\].userСalories);
const sumCalories = userСalories.reduce((total, obj) => total + obj.differencePerDay, 0);
this.tableDeficitWeight\[i\].sumCalories = `${Math.abs(sumCalories)} кал.`;
this.tableDeficitWeight\[i\].sumKg = `${Math.abs(sumCalories / 7700).toFixed(2)} кг.`;
}
},
},
created() {
this.$store.dispatch('getListAllUsers');
// Ключи для итериции по пользователям.
this.allUsers = this.$store.state.UserInfoDatabase.listAllUsers;
},
beforeMount() {
console.log(this.allUsers);
},
mounted() {
// console.log(this.tableExcessWeight);
// console.log(this.tableDeficitWeight);
const keyUsers = Object.keys(this.allUsers);
for (let i = 0; i < keyUsers.length; i += 1) {
// Объект данных по каждому пользователю
const user = this.allUsers\[keyUsers\[i\]\];
// Если пользователь фиксировал свои кал.
const keyDate = Object.keys(user.userСalories)\[Object.keys(user.userСalories).length - 1\];
// Весовой статус пользователя
const weightUserStatus = user.userСalories\[keyDate\].weightUserStatus;
// У пользователя есть поле userСalories и он имеет дефицит веса
if (user.userСalories && weightUserStatus === 'deficitWeight') {
// Пушим в массив для людей с дефицитом веса.
this.tableDeficitWeight.push(user);
} else if (user.userСalories && weightUserStatus === 'excessWeight') {
// В противном случае, пушим в массив для людей с избытком веса.
this.tableExcessWeight.push(user);
}
}
this.totalCaloriesBurned();
},
};
</script>][1]][1]