Цель: при загрузке маршрута реакции-маршрутизатора отправьте действие Redux с запросом asynchronic Saga worker to выборка данных для базового компонента без учета состояния этого маршрута.
Проблема: компоненты без состояния - это простые функции и не имеют методов жизненного цикла, таких как componentDidMount, поэтому я не могу (?) отправлять действие Redux изнутри функции.
Мой вопрос частично связан с Преобразование компонента Stateful React в безстоящий функциональный компонент: как реализовать "componentDidMount" вид функции?, но моя цель - просто отправить одно действие Redux, запрашивающее данные, которые будут заноситься в хранилище асинхронно (я использую Saga, но я думаю, что это не имеет отношения к проблеме, поскольку моя цель - просто отправить обычное действие Redux), после чего компонент без гражданства будет повторно отображать из-за измененных данных.
Я думаю о двух подходах: либо используйте некоторую функцию react-router, либо Redux connect. Есть ли так называемый "Реакт-путь" для достижения моей цели?
EDIT: единственное решение, которое я придумал до сих пор, отправляет действие внутри mapDispatchToProps, таким образом:
const mapStateToProps = (state, ownProps) => ({
data: state.myReducer.data // data rendered by the stateless component
});
const mapDispatchToProps = (dispatch) => {
// catched by a Saga watcher, and further delivered to a Saga worker that asynchronically fetches data to the store
dispatch({ type: myActionTypes.DATA_GET_REQUEST });
return {};
};
export default connect(mapStateToProps, mapDispatchToProps)(MyStatelessComponent);
Однако это кажется каким-то грязным, а не правильным.