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 не должно быть обратного вызова для выполнения перехода. Типичный поток будет:

  1. Ваше мнение выслушивает изменения в магазине
  2. По вашему мнению, пользователь что-то щелкает
  3. Представление вызывает действие (без таймаута)
  4. Затем магазин реагирует на действие, возможно, на обновление активного элемента.
  5. Представление уведомляет об обновлении магазина, а затем переходит в новое состояние.

Хороший учебник по использованию библиотеки alt для flux можно найти здесь: http://alt.js.org/guide/

Другие вопросы по тегам