Эффекты

Правильно:

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. Код ниже поможет отлавливать события которые не забиндены к скоупу.