GoldenLayout - Как я могу изящно обрабатывать неизвестный компонент во время инициализации

Я работаю над веб-приложением, которое обслуживается "модулями / виджетами", которые динамически регистрируются в GoldenLayout. Конфигурация макета сохраняется и применяется при запуске, чтобы сохранить макет окна пользователя. Из-за ряда различных факторов доступный им "модуль / виджет" может быть удален. Если у этого пользователя этот "модуль / виджет" отсутствовал на его экране, то при последнем входе в систему он сохраняется в конфигурации goldenlayout. Когда пользователь в следующий раз входит в систему, он получает "Ошибка конфигурации" для "неизвестного компонента". Есть ли способ для GoldenLayout просто игнорировать неизвестные компоненты, перечисленные в конфигурации?

1 ответ

Я опубликую свое решение для дальнейшего использования:

  • layout не работает с командой layout.init()
  • это крайний случай для нас => происходит, когда пользователи отключают какой-либо компонент с помощью переключателя функций или когда команда тестирования загружает старую версию приложения, которая еще не содержит компонент
  • мы не хотим реализовывать какое-либо сложное решение для анализа макета и удаления определенного вида, но у нас есть самое надежное решение => восстановить макет по умолчанию

Вот как я это решил:

          try {
      this.layout.init();
    } catch (e) {
      console.error('Layout initialization failed', e);
      // => delete persisted layout

      // => display some toast notification that layout initialization has failed and reload/restore will happen
      setTimeout(() => location.reload(), 5000); // reload with default layout (no persisted layout present)
      return;
    }
Другие вопросы по тегам