Бесконечная рекурсия при попытке сращивания массива Vuex - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть настройка кодов и ящиков здесь , которая должна печатать три даты.

Наиболее подходящие фрагменты кода:

import Vue from "vue";
import App from "./App";
import Vuex from "vuex";
Vue.use(Vuex);

const { DateTime } = require("luxon");
Vue.config.productionTip = false;

var store = new Vuex.Store({
  debug: true,
  state: {
    dateTimes: [
      { startTime: DateTime.local(), meta: "test" },
      { startTime: DateTime.local().plus({ days: 2 }), meta: "test" }
    ]
  },
  mutations: {
    addItem(state) {
      var test = {
        startTime: DateTime.local().plus({ days: 1 }),
        meta: "test"
      };
      for (var i = 0; i < state.dateTimes.length; i++) {
        if (state.dateTimes[i].startTime > test.startTime) {
          state.dateTimes.splice(i, 0, state.dateTimes);
        }
      }
      state.dateTimes.push(test);
    }
  }
});

new Vue({
  el: "#app",
  store: store,
  components: { App },
  template: "<App/>",
  created: function() {
    this.$store.commit("addItem");
  }
});

Я получаю конкретное сообщение об ошибке: Error in render: "InternalError: too much recursion"

Как правильно соединить элемент в Vuexмассив?

1 Ответ

0 голосов
/ 23 ноября 2018

Это проблема state.dateTimes.splice(i, 0, state.dateTimes); Вы всегда добавляете те же даты обратно, поскольку state.dateTimes будет иметь значения, так как операция среза еще не повлияла на массив.

Простое решениечтобы это было state.dateTimes.splice(i, 0, test); Возможно, это не то решение, которое вам нужно, но оно исправит ошибку максимального стека вызовов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...