В данный момент у меня есть операторы connect в контейнерах.Это приводит к тому, что мне приходится связывать все отдельные состояния и действия в одном большом операторе connect:
@connect(
(state: RootState): Pick<App.Props, 'state1' & 'state2' & 'state3'> => {
return { state1: state.state1, state2: state.state2, state3: state.state3 }
},
(dispatch: Dispatch<Action<Actions1 & Actions2 & Actions3>>): Pick<App.Props, 'action1' & 'action2' & 'action3'> => ({
action1: bindActionCreators(omit(Actions1, 'Type'), dispatch),
action2: bindActionCreators(omit(Actions2, 'Type'), dispatch),
action3: bindActionCreators(omit(Actions3, 'Type'), dispatch)
})
)
Затем я передаю все реквизиты в дереве таким компонентам:
<Component1 props={ this.props.action1 } />
<Component2 props={ this.props.action2 } />
Это работает нормально, но это означает, что когда мы добавляем новые состояния в хранилище Redux, компонент контейнера будет становиться все больше и больше.
С моей точки зрения, было бы разумнее передатьони @connect
в каждом отдельном компоненте, что означает, что сам компонент будет напрямую подключен к хранилищу.
Есть ли какая-то причина, по которой мы не можем использовать @connect
в компонентах, а не в контейнерах?
Есть ли причина, по которой это будет плохой практикой?