2015-11-05 4 views
1

Мой случай использования прост. Я хочу добавить уведомление в мое NotificationStore, чтобы отобразить информационный баннер для пользователя в том случае, если мой основной магазин был успешно обновлен.flux: как обновить магазин из магазина

Самый простой способ для достижения этой цели, как представляется, повышение действия внутри моего основного магазина:

onSaveRule: function() { 
     localStorage.setItem("rule", JSON.stringify(_state)); 
     action.fire("rule successfully saved!"); //mutates NotificationStore 
    }, 

Однако action.fire линия выдает следующее исключение времени выполнения:

Инвариантное Нарушение: Dispatch.dispatch (...): Невозможно отправить в середине отправки.

Очевидно, что вызов изнутри магазина является анти-шаблоном. Итак, каков правильный способ достижения желаемого эффекта?

+0

Есть ли у вас дальнейшие проблемы? Если ваша проблема решена, вы должны отметить ответ, который помог решить проблему как ** принятый **. Это помогает другим людям найти то, что они ищут. Счастливое кодирование :) –

ответ

0

Использование storeA и storeB в качестве примера, где ваша первоначальная идея должна иметь storeA огонь из action и имеют storeB слушать ту же самую action.

Вместо непосредственного обжига в action внутри storeA, вы должны иметь storeB непосредственно слушать storeA изменения состояния triggers. Значение для storeA изменений состояния и звонков trigger, чтобы уведомить вас components, storeB также будет уведомлено об этом trigger. storeB может затем позвонить getters, чтобы получить новые состояния от storeA.

В этом шаблоне storeB является производным магазином от storeA. Это сохраняет однонаправленный поток данных философия флюс модель.

Смежные вопросы