Эффекты
Правильно:
export const getBrandFx = createEffect(async (id) => await API.get(urls.getBrand(id)));
Неправильно (отсутствует await перед API.get):
export const getBrandFx = createEffect(async (id) => API.get(urls.getBrand(id)));
Несколько асинхронных действий в одном эффекте без использования других эффектов допускается. Правильный пример:
export const getBrandFx = createEffect(async (id) => {
const resultA = await API.get(urls.getBrand(id));
const resultB = await API.get(urls.getBrand(id));
return [resultA, resultB];
});
Эффекты (UPD)
Внутри эффекта можно вызывать евенты. Но нужно следить чтобы эффекты либо делали что-то асинхронное либо вызывали евенты. Не все вместе.
Что бы гарантированно не потерять скоуп можно использовать scopeBind — вызвать его в начале коллбека эффекта.
Микс client side store и ssr store вызывает проблемы передачи данных между ними, лучше этого избегать и делать все через SSR сторы.
Нельзя забывать биндить евенты к скоупу через useEvent. Код ниже поможет отлавливать события которые не забиндены к скоупу.