根据路由显示同一组件中的不同数据Vue/Vuex

Displaying different data in the same component based on routes Vue/Vuex

在基于值匹配的按钮单击上,我用我在另一个组件中可视化的对象填充了一个数组。 我想要实现的是: 根据我目前所走的路线,我想要可视化数据的同一组件来显示不同的数据。 数据在一系列步骤之后填充,这些步骤以下面提交突变@click 的方法结束,为了达到所述步骤,您将转到不同的路线。 到目前为止,当我从该组件中的多个路由填充数据时,我正在实现的是在另一个列表之上生成列表。

modifySelectedLimitCardStatus() {
  const payload = [
    this.editedLimitCard.id,
    (this.editedLimitCard.limit_card_selected_status = true)
  ];
  this.$store.commit("selectLimitCard", payload);
}

状态&突变:

 selectedLimitCard: [],

 selectLimitCard: (state, payload) => {
    state.limitCards.forEach(limitCard => {
      if (
        limitCard.id === payload[0] &&
        limitCard.limit_card_selected_status !== payload[1]
      ) {
        state.selectedLimitCard.push(limitCard);
        console.log(state.selectedLimitCard);
      }
    });
  }

getter:

  getSelectedLimitCard: state => {
    return state.selectedLimitCard;
  }

最后,可视化数据的组件:

  <v-list v-for="card in getSelectedLimitCard" :key="card.id"">
        <v-list-tile>
          <v-list-tile-content>№</v-list-tile-content>
          <v-list-tile-content class="align-end">
            {{ card.limit_card_number }}
          </v-list-tile-content>
        </v-list-tile>
      </v-list>

有人可以给我一个想法并指出正确的方向吗? 提前致谢!

根据评论部分的反馈,听起来数据存储可能是问题所在,数组是此任务的 ill-prepared 数据结构。我建议使用一个简单的 JSON 对象,每个键都是刚刚创建的路由:

limitCards = {
    routeone: {
        payload: ...,
        other_route_specific_data: ...
    },
    routetwo: {
        payload: ...,
        other_route_specific_data: ...
    }
}

然后您可以将 "v-for" 的数据绑定到 return 的:

limitcards.[current route].selectedLimitCard

这似乎可以解决唯一性和向路由显示每个选项卡特定数据的能力。