Использование повторно используемых модулей Vuex для обработки окон с несколькими вкладками

#vue.js #multidimensional-array #vuex #store

Вопрос:

Попытка создать файловую систему, аналогичную проводнику Windows, но с несколькими вкладками. Таким образом, приложение состоит из нескольких окон, которые состоят из нескольких вкладок. Изначально я планировал хранить все данные и их взаимосвязи в одном модуле хранилища, который работает с 2d-массивом (так как первый слой представляет окна, а второй-вкладки), но, проработав его, я понял, что обработка 2d-массива-очень сложная работа. Поэтому мне пришла в голову идея многоразового модуля, который регистрируется каждый раз при создании нового компонента «окно».

Вопрос в следующем: является ли это правильным шаблоном для обработки данных в Vue таким образом и есть ли какие-либо недостатки в использовании этого подхода? Или, может быть, есть лучшее решение для обработки данных? (извините, если мой английский плохой)

 <template>
  <div class="view">
    <tab-component v-model="model"></tab-component>
  </div>
</template>

<script>
import TabComponent from "@/components/TabComponent";

import tabs from "@/store/modules/files/_tabs";
import store from "@/store/index";

export default {
  components: { TabComponent },
  props: {
    index: {
      type: [String, Number],
      required: true,
    },
  },

  computed: {
    model: {
      get() {
        const { activeTab } = this.$store.state.files[`tabs_${this.index}`];
        return activeTab;
      },

      set(value) {
        const { $store, index } = this;
        $store.commit(`files/tabs_${index}/SET_ACTIVE_TAB`, value);
      },
    },
  },

  created() {
    const { index } = this;
    store.registerModule(["files", `tabs_${index}`], tabs);
  },

  beforeDestroy() {
    const { index } = this;
    store.unregisterModule(["files", `tabs_${index}`]);
  },
};
</script>
 

Комментарии:

1. Я действительно не понимаю, чего ты хочешь достичь. Обычно мы храним все в JSON. Может храниться в Vuex или храниться в браузере