Redux и Redux Thunk не синхронно - PullRequest
0 голосов
/ 31 мая 2018

Я предполагаю, что при работе с redux диспетчеризация действий является синхронной задачей.

fire action 1 - > store updated
fire action 2 -> store updated

В проекте, над которым я сейчас работаю, у меня есть настройщик продукта, который позволяет некоторым пользователям выбирать, они могут размещать несколько заказов, но если они только заказывают свой текущий выбор и выбирают "Покупка ", я запускаю" addOrder ", добавляя их выбор в массив заказов, а затем действие" покупка ", которое представляет собой отправку заказов, хранящихся в избыточном количестве, в мой API корзины.

Я ожидалчто я мог бы положиться на то, что хранилище находится в согласованном состоянии, надежно после каждого действия, и поэтому, когда это второе действие сработает, оно будет иметь состояние, как оно есть, после того, как первое обычное действие сработало перед ним, но без кубиков,

  • Не верны ли мои ожидания и понимание редукса здесь?
  • Если да, то действует ли каким-то образом избыточный танк за пределы обычной диспетчеризации?

inмой подключенный компонент я отправляю каждое действие:

//.... inside component
purchase = () => {
  this.props.addOrder(); // regular action
  this.props.purchase(); // thunk
};
// ... rest of component

1 Ответ

0 голосов
/ 31 мая 2018

Да, диспетчеризация всегда 100% синхронна, если не было изменено промежуточным программным обеспечением.И да, по умолчанию вы можете снова вызвать getState() после отправки, чтобы получить обновленное состояние:

function checkStateAfterDispatch() {
    return (dispatch, getState) => {
        const firstState = getState();
        dispatch({type : "FIRST_ACTION"});

        const secondState = getState();

        if(secondState.someField != firstState.someField) {
            dispatch({type : "SECOND_ACTION"});
        }    
    }
}
...