Какие компоненты следует учитывать как умный, так и немой?
Вся ваша логика должна присутствовать в ваших умных компонентах как контейнеры, вы получаете все данные здесь и передаете это своим презентационным компонентам, которые только отображают компоненты (ничего больше, поэтому их называют немыми). Есть замечательная статья об этом here, которая объясняет это очень хорошо.
Как реализовать правильный поток данных с помощью Redux?
Хорошо, я бы сказал, что этот вопрос действительно широк, и сокращение docs само по себе является действительно хорошим способом понять это.
Как состав компонента может выглядеть в этом случае?
ModalContainer.js
class ModalContainer extends React.Component{
render(){
return <Modal {...this.props} />
}
}
function mapDispatchToProps(dispatch){
//map your dispatches here
}
export default connect()(ModalContainer)
Modal.js
class Modal extends React.Component{
render() {
// you can change your modal content here based on some props, make it more generic
<Form {...this.props}/>
}
}
export default Modal
Form.js
class Form extends React.Component{
onSubmit() {
const {dispatch} = this.props
//dispatch your action here to call API and update store
}
render() {
<Form onSubmit={this.onSubmit.bind(this)>
//form data
</Form>
}
}
export default Form
PS:
- Вы можете сделать его более универсальным путем создания FormWrapper, который, основываясь на реквизита дает Вам конкретную форму в вашем модальный (другими словами, вы можете изменить содержание модальных и использовать ту же модальность везде)
- Вышеупомянутый код - это всего лишь демонстрационный код, показывающий, как вы можете компоновать свои компоненты, но должен работать с небольшими изменениями.
Любые канонические примеры кода или блоги для чтения?
Sound Redux - Я нашел этот код действительно чистым и полезным в начале.
Пожалуйста, спросите, нужно ли вам что-нибудь еще
Спасибо! Теперь он выглядит намного яснее. Но все же остались вопросы. В соответствии с нашими требованиями к проекту и этой красивой статьей https://hackernoon.com/redux-step-by-step-a-simple-and-robust-workflow-for-real-life-apps-1fdf7df46092#.kezmtfuszv - Немые компоненты не должны получать доступ к хранилищу и отправлять какие-либо действия ... Так что я должен рассматривать форму как интеллектуальный компонент внутри немой, или лучше будет поднимать события вверх, чтобы их реализовал смарт-ModalContainer? –