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

Проект Raffle представлял собой Ruby on Rails API для серверной части и React JS для внешнего интерфейса.

В одном из моих компонентов у меня был следующий код:

Простая функция mapDispatchToProps, которая помогала мне отправлять действие newPost, которое представляло собой запрос на выборку серверной части для создания новой записи.

Мой интервьюер спросил меня кое-что, что заблокировало меня на пару минут.

Когда вызывается функция newPost()?

Я был немного сбит с толку, так как это выглядит довольно очевидно, так как эта функция была обратным вызовом для события onClick. Итак, мой первый ответ был:

«Когда срабатывает событие onClick».

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

onClick событие срабатывает {this.props.newPost}, этот обратный вызов исходит от newPost: (post) => dispatch(newPost(post));

Пока нет работы, так как мы просто отправляем действие newPost, о котором я говорил ранее.

Без Thunk работа будет происходить в экшене, но теперь, после выборки, мы снова что-то отправляем, на этот раз объект {type: "CREATE_POST", payload: result} .

Так где же происходит работа, ведь мы всегда возвращаем простые объекты?

Ответ заключается в том, что Thunk выполняет код за нас, поэтому он называется промежуточным программным обеспечением, являясь мостом между приложением и Redux.

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

Я могу быть только очень благодарен моему интервьюеру, потому что я смог углубиться в это и узнать что-то новое.