Существует несколько допустимых способов «привязать» создателей ваших действий при подключении компонента Redux. Вот несколько примеров:
import {action1, action2} from "myActions";
import {bindActionCreators} from "redux";
const mapDispatchToProps(dispatch) => {
return {
manuallyBoundAction : (...args) => dispatch(action1(...args)),
autoBoundAction : bindActionCreators(action2, dispatch),
multipleActionsTogether : bindActionCreators({action1, action2}, dispatch)
}
};
const MyComponent = (props) => {
return (
<div>
<button onClick={props.manuallyBoundAction}>Run First Action</button>
<button onClick={props.autoBoundAction}>Run Second Action</button>
<button onClick={props.multipleActionsTogether.action1}>Run Third Action</button>
<button onClick={props.multipleActionsTogether.action2}>Run Fourth Action</button>
</div>
)
}
export default connect(null, mapDispatchToProps)(MyComponent);
// or, you can use the "object shorthand" for mapDispatch:
export default connect(null, {action1, action2})(SomeOtherComponent)
Все это в конечном итоге приводит к функциям, которые обертывают вашего создателя действия и автоматически передают его возвращаемое значение в dispatch()
при вызове.
Я лично рекомендую подход "сокращение от объекта". Мне никогда не было веской причины написать действительную mapDispatch
функцию вручную.