Я пытаюсь создать динамическое меню в vue, но пока я пытаюсь применить "активный" класс css к пункту меню, не работает, я вижу, что переменная меню "menuFomartado" не обновляется VUE, о чем я думаю неправильный?
Этот код работает только при повторной загрузке страницы.
<script>
export default {
data() {
return {
menuFomartado: [],
menu: [
{
icon: "fa fa-chart-area",
pageName: "dashboard",
title: "Dashboard",
role: "admin"
},
{
icon: "fa fa-user-circle",
pageName: "clientes",
title: "Clientes",
role: "admin"
},
]
};
},
computed: {
sideMenu() {
return this.nestedMenu(this.menu);
}
},
watch: {
$route() {
this.menuFomartado = this.sideMenu;
}
},
mounted() {
this.menuFomartado = this.nestedMenu(this.sideMenu);
},
methods: {
nestedMenu(menu) {
menu.forEach((item, key) => {
if (typeof item !== "string" && item.pageName != "") {
menu[key].active = item.pageName == this.$route.name;
}
});
return menu;
}
}
};
</script>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


По материалам @ pierre-said из сообщения Vuejs и Vue.set (), обновить массив
Я просто сменил строчку
menu[key].active = item.pageName == this.$route.name;
К
this.$set(menu[key], "active", item.pageName == this.$route.name);
И отлично работает