Приемник возвращает объект-наблюдатель вместо нуля - PullRequest
1 голос
/ 04 июня 2019

Я хотел бы создать простое приложение "Игра жизни Конвея" и сохранить настройки, которые уже были сделаны в localStorage.

Я создал три вида

  • Настройки карты | Определить размер карты и т. Д.

  • Настройка карты | Создайте предустановку для вашей карты

  • Запуск карты | Запустите ваш пресет

При каждом изменении настроек предустановка должна быть удалена, поскольку предустановка может иметь другой старый размер. В настройках используются значения по умолчанию, если localStorage пуст.

В моем магазине я сохраняю настройки карты в свойстве grid. Таким образом, значение равно либо null, либо двумерному массиву из localStorage.

При маршрутизации в файл MapSetup.vue я использую смонтированное событие для установки предустановки

  mounted: function() {
    if (this.grid) { // the preset from the store / localStorage
      this.currentGrid = this.grid; // use the preset
    } else {
      this.currentGrid = this.generateNewMap(); // generate a new preset
    }
  }

К сожалению, this.grid (получатель магазина) не равен нулю и возвращает элемент __ob__ observer. Из-за этого оператор if равен truey и не будет генерировать новый пресет.

Я создал рабочий пример своего приложения здесь

https://codesandbox.io/s/vuetify-vuex-and-vuerouter-h6yqu

Вы можете определить настройки в MapSettings.vue , а состояние grid из mapSetup должно быть установлено на null. После перенаправления на MapSetup.vue сетка не должна появляться, потому что this.grid возвращает __ob__ observer вместо нуля.

Как я могу это исправить?

1 Ответ

2 голосов
/ 04 июня 2019
[MutationTypes.RESET_MAP_SETUP]: state => {
    state.grid = [];
}

когда вы сбрасываете сетку, вы устанавливаете ее как пустой массив, а не как ноль, поэтому он не равен нулю в вашем подключенном хуке

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