Ожидает ли избыточный преобразователь, пока все ранее отправленные действия не модифицируют хранилище?

handleDeleteClick = propertyName => () => {
  this.props.clearFilterOption(propertyName, this.props.filtersPropertyName);
  this.props.onFilterClear();
};

handleDeleteClick функция является обработчиком кнопки. Мой первый редукс-экшен clearFilterOption модифицирует магазин. Второе действие onFilterClear — это асинхронное действие, которое отображает параметры фильтра из getState redux-thunk и вызывает API. Мой вопрос: ожидает ли редукционный преобразователь ранее отправленного действия, которое изменяет хранилище? Другими словами, есть ли у меня уверенность, что второе действие сработает с самой последней версией магазина?

На данный момент это работает так, как ожидалось. Второе действие срабатывает с очищенным параметром фильтра. Но я не знаю, потому ли это, что я использую redux-thunk, или потому что clearFilterOption на данный момент является недорогой функцией.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
325
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Промежуточное программное обеспечение Thunk не «ждет» как таковое, все, что он делает, это смотрит на отправленное действие и, если это функция, вызывает ее.

Порядок изменения вашего магазина определяется вашими действиями и тем, являются ли они асинхронными или нет.

В вашем случае, если ваше первое действие clearFilterOption является синхронным, оно всегда будет обновлять хранилище перед отправкой второго действия. Если это не синхронно, то это зависит от времени всего, что происходит в ваших преобразователях.

Если вам всегда нужно, чтобы одна вещь выполнялась раньше другой, вы должны связать свои действия (как Thunks), а не отправлять их последовательно в свой handleDeleteClick.

Спасибо Уилл! Так что мой код на 100% правильный, но я должен помнить, что первое действие не станет асинхронным. Верно?

papryk 29.05.2019 10:28

Да, пока первое действие не асинхронно, оно безопасно.

Will Jenkins 29.05.2019 10:31

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