React Action Callback - лучший метод перехода
Дело в том, что я добавляю новый элемент, нажимая на моего пользователя через действие. Когда Предметы добавлены, ActiveItemStore будет обновлен, и я хочу затем перейти к активному Предмету. Но в настоящее время переход вызывается до обновления магазина.
Текущий код:
var actionListener = new ActionListeners(alt);
var listenerRef = actionListener.addActionListener(MyItemActions.ADDED,
function() {
setTimeout(function() { // Fixes Cannot dispatch in the middle of a dispatch.
this.transitionTo('active-item', {locale: user.locale});
// will be called before the ActiveItemStore is updated
});
}.bind(this));
actionListener.removeActionListener(listenerRef);
}.bind(this));
// call action
MyItemActions.add({
id: item.id,
active: true
});
Нужно ли использовать waitFor
для этого случая или какова лучшая практика, и как избежать отправки в рассылку без setTimeout?
1 ответ
Решение
В двух словах: у функции Action не должно быть обратного вызова для выполнения перехода. Типичный поток будет:
- Ваше мнение выслушивает изменения в магазине
- По вашему мнению, пользователь что-то щелкает
- Представление вызывает действие (без таймаута)
- Затем магазин реагирует на действие, возможно, на обновление активного элемента.
- Представление уведомляет об обновлении магазина, а затем переходит в новое состояние.
Хороший учебник по использованию библиотеки alt для flux можно найти здесь: http://alt.js.org/guide/