Получение доступа к actions и state с помощью функции connect()
Функция connect()
, предоставляемая пакетом react-redux
, может принимать до четырёх аргументов, каждый из которых является необязательным. После вызова функции connect()
возвращается компонент высшего порядка, который можно использовать для оборачивания любого компонента React.
Аргумент mapStateToProps
является функцией, которая возвращает либо обычный объект, либо другую функцию. Передача этого аргумента connect()
приводит к подписке компонента-контейнера на обновления хранилища Redux. Это означает, что функция mapStateToProps
будет вызываться каждый раз, когда состояние хранилища изменяется.
Аргумент mapDispatchToProps
может быть либо объектом, либо функцией, которая возвращает либо обычный объект, либо другую функцию.
Если функции connect()
передаётся аргумент mergeProps
, то он представляет собой функцию, которая принимает следующие три параметра:
stateProps
— объект свойств, возвращённый из вызоваmapStateToProps()
.dispatchProps
— объект свойств с генераторами действий изmapDispatchToProps()
.ownProps
— исходные свойства, полученные компонентом.
Эта функция возвращает простой объект со свойствами, который будет передан заключённому в обёртку компоненту. Это полезно для осуществления условного маппинга части состояния хранилища Redux или генераторов действий на основе свойств.
В mergeProps
прилетают stateProps
, который содержит текущее состояние и dispatchProps
, который дает возможность отправить событие. Далее возвращаем объект с текущим state
и событием, который попадет в props
нашего компонента.
Если connect()
не передают эту функцию, то используется её стандартная реализация:
Тут все просто, определяем функции mapStateToProps() для чтения состояния и mapDispatchToProps() для передачи события. Далее генерируем компонент путем передачи созданных функций в connect().
Last updated
Was this helpful?