I'm trying to call a redux action from a function. The component that I'm calling the function from is already connected to the store. However, it doesn't work if I pass the action such as:
function myFunc(action) {
action()
}
Is there a way to pass an action via a parameter? Thank you.
using
bindActionCreator
from redux is the easiest way to dispatch actions from the component.here in mapDispatchToProps, we are using
bindActionCreator
to bind a function toredux
store
dispatch
. so that whenever you call it. it actually dispatches the store actionThe action must be connected to a dispatch for the reducer to catch it and update the store.
In order to do this you should include your action as a
mapDispatchToProps
arg for redux's connect function. It would look like this:connect(null, { actionCreator })(MyComponent)
To pass the connected action creator to a function from within the component, access it via props:
myFunc(this.props.actionCreator)
Putting it all together:
Now when
myFunc
executesactionCreator()
it will properly dispatch the action to be caught by your reducer.