Основная идея connect
с mapDispatchToProps
и mapStateToProps
- сделать ваши компоненты пользовательского интерфейса простыми и легко используемыми. Представьте себе, если у вас есть 3 приложения, которые имеют совершенно разную архитектуру (redux, flux, чистый React ContextAPI), но должны повторно использовать одни и те же компоненты пользовательского интерфейса. Если вы инкапсулируете бизнес-логику непосредственно в свои компоненты (пример 2.), то может быть очень трудно или даже невозможно повторно использовать ее, потому что она привязана к некоторому store
(в том месте, где вы используете <Component ... />
).
Как дополнительный комментарий и хороший пример того, как mapDispatchToProps
может сделать ваше приложение чистым, это четкое разделение между бизнес-логикой и компонентом пользовательского интерфейса.
Пример:
У вас есть компонент Button
, который используется во всем приложении. Затем вы получаете требование, что вам нужно иметь кнопку выхода из системы в разных местах вашего приложения. Один из способов - создать новый обычный компонент React, который будет использовать компонент Button
внутри, а также будет иметь некоторую логику.
connect
с mapDispatchToProps
приходит вам на помощь и позволяет легко создать новый компонент LogoutButton
с присоединенной логикой (который также позволяет вам обновлять состояние избыточности), а затем всякий раз, когда вам нужна кнопка выхода, вы просто используйте LogoutButton
и никакой дополнительной логики не понадобится, потому что все это определено внутри mapDispatchToProps
и уже присоединено к компоненту Button
.