Пока я был на собеседовании по поводу моего 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.
Тогда это сбивало с толку, но теперь, когда я понял, что мой код только передает фрагменты кода, а не запускает их, это имеет смысл.
Я могу быть только очень благодарен моему интервьюеру, потому что я смог углубиться в это и узнать что-то новое.