В одном из ответов Дана Абрамова есть код
// action creator
function loadData(dispatch, userId) { // needs to dispatch, so it is first argument
return fetch(`http://data.com/${userId}`)
.then(res => res.json())
.then(
data => dispatch({ type: 'LOAD_DATA_SUCCESS', data }),
err => dispatch({ type: 'LOAD_DATA_FAILURE', err })
);
}
// component
componentWillMount() {
loadData(this.props.dispatch, this.props.userId); // don't forget to pass dispatch
}
Кажется, mapDispatchToProps
просто отображает отправку c в качестве реквизита (как this.props.dispatch
) таким образом, этот компонент может отправлять любое действие вообще?
Во-первых, это хорошая форма или это просто пример, но мы должны сделать это конкретно c диспетчеризацией, такой как this.props.dataReceived
?
Во-вторых, так как для приведенного выше кода, mapDispatchToProps
будет записано как:
const mapDispatchToProps = dispatchOfReduxStore => {
return {
dispatch: dispatchOfReduxStore
}
}
или даже просто:
const mapDispatchToProps = dispatch => {
return {
dispatch
}
}
и упрощено до:
const mapDispatchToProps = dispatch => ({ dispatch })
и this.props.dispatch
становится универсальной отправкой?
Я также обнаружил, что когда мы просто опускаем mapDispatchToProps
в connect()
, то this.props.dispatch
автоматически доступно.