У меня есть приложение реагирования / избыточности и я использую redux-thunk.
У меня есть кнопка в одной части приложения, которая при нажатии запускает действие, которое принимает состояние какой-то совершенно другой части приложения и отправляетэто бэкэнд.Когда приходит ответ от сервера, он должен изменить состояние приложения.Как я могу это сделать?
Проверьте приведенный ниже пример:
Часть приложения с кнопкой:
// MyModalContainer.js
import {connect} from 'react-redux';
import {MyModal} from './MyModal';
const mapStateToProps = (state) => ({
});
const mapDispatchToProps = (dispatch) => ({
orderButtonHandler: () => {...to do...}
});
const MyModalContainer = connect(mapStateToProps, mapDispatchToProps)(MyModal);
export {MyModalContainer};
///////////////////////////////////
// MyModal.js
import React from 'react';
import Button from '@material-ui/core/Button';
class MyModal extends React.Component {
render() {
return (
<div>
<Something>....</Something>
<Something2>....</Something2>
<Button onClick={this.props.orderButtonHandler} color="primary">
Order
</Button>
</div>
);
}
}
export {MyModal};
Данные для отправки в бэкэнд при нажатии кнопкихранится в Redx в:
state.cartData = {
data1: ....,
data2: ....,
data3: ....
}
и не отображается в MyModal .
Один из вариантов заключается в том, что я могу отправить state.cartData
на MyModal
через MyModalContainer
, а затем кнопка отправит его на orderButtonHandler
.Но тогда MyModal
будет перерисовываться каждый раз, когда state.cartData
изменяется, даже если он ничего не вытягивает из state.cartData
.