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;
}