开发者问题收集

VueJs 不更新数组

2021-04-06
40

我正在尝试在 vue 上创建一个动态菜单,但是,当我尝试将“active”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>

1个回答

基于 @pierre-said 的帖子 Vuejs 和 Vue.set(),更新数组

我刚刚将行

menu[key].active = item.pageName == this.$route.name;

更改为

this.$set(menu[key], "active", item.pageName == this.$route.name);

并且工作正常

cristianormoraes
2021-04-06