Не использовал бы на Вашем месте классы, использовал бы обычные объекты.
По типу:
interface Store {}
const _store: Store = {
// some store logic here
};
const store = makeAutoObservable(_store);
export default store; // ну или без default-варианта
На тот момент, когда активно работал с MobX'ом была проблема, что
makeAutoObservable({ /* some store logic here */ })
съедало типизацию.
С таким подходом можно импортировать файлы сторов между собой, если это необходимо конечно (кстати и контекст не нужен будет). Ну и никаких проблем не будет в использовании autorun / reaction / when.
Паттерн "модуль" для Вас видимо в данном случае - можно вне хука хранить данные, но и позаботиться об инвалидации таких данных сами будет должны. Ну и если что, то можно сделать свой "redux" - https://react.dev/reference/react/useReducer.
justifycontent, это по сути библиотека для работы со состоянием, поддерживающая промисы, а значит и сетевые запросы можно с её помощью обрабатывать. Есть кэширование, механизм инвалидации, "склеивание" запросов по общему ключу, повторение запросов и т.д.
Дело в том, что эти пакеты использует редактор, для отображения подсказок. Причем даже в том случае, если TS'а в проекте нет. Как dev dep. можно использовать, ну или просто забить, если не хочется видеть ещё один пакет в проекте.
Как вариант подменить origin, это можно локальный субдомен для хоста создать и запускать по адресу 127.0.0.1. Если в настройках csp не игнорируются поддомены (тут не знаю), то возможно и получится. Это так, чисто мысли.
По типу:
На тот момент, когда активно работал с MobX'ом была проблема, что съедало типизацию.
С таким подходом можно импортировать файлы сторов между собой, если это необходимо конечно (кстати и контекст не нужен будет). Ну и никаких проблем не будет в использовании autorun / reaction / when.