Дано:
Сервис на реакт, бОльшая часть работы которого лежит за аутентификацией.
Синглтон для ajax, который ничего не знает о реакте. Просто абстрактный класс.
Компонент Alert - каркас самого уведомления. И AlertRenderer - обёртка для алертов, которая порталит их (ReactDOM.createPortal(...)) в общую обёртку алертов на уровне App.js
Нужно:
Создать механизм обработки общих ошибок от сервера. Т.е ajax ловит ошибку, и если её обработка самим мной мне запревенчена опциями вызова метода ajax, то императивно вызывать рендер конкретного компонента, отдавая ему пропы так же императивно.
То есть хотелось бы чего-то типа
import Alert from './components/common/Alert'
.catch(error) {
Alert.set({textError: `${error.code}: ${error.message}`})
}
Я понимаю что можно было бы написать нативный класс для алертов со своим чистым ждаваскриптовым методом рендера не наследуясь от реакта, но это будет дубликат. Где-то я завязываю алерты на стейт компонента и вызываю из jsx, но в данном случае мне нужно вызвать его так.
Можно, конечно, обойти проблему - в стейт app.js сложить объект для массива ошибок, в нём же сетнуть в класс ajax колбэк, который бы этот массив пополнял при возникновении ошибки, но 1 - это излишне, мне не нужна реактивность стейта для простой обработки ajax ошибок, а 2 - мне интересно есть ли вообще у реакта возможность императивного рендера компонентов