Binding Actions
We saw in our introduction that we can create functions that implicitely know about—or are bound to—dispatch.
At a simple version of this might look as follows:
const actions = bindActionCreators({ increment, decrement, set }, dispatch);
And now we could put them into the component.
<button onClick={() => actions.increment()}>Increment</button>
<button onClick={() => actions.set(0)}>Reset</button>
<button onClick={() => actions.decrement()}>Decrement</button>
You could even create a hook if you wanted to do this on the regular.
In a new file called set-actions.js
:
import { bindActionCreators } from "redux";
import { useDispatch } from "react-redux";
import { useMemo } from "react";
export function useActions(actions) {
const dispatch = useDispatch();
return useMemo(() => {
return bindActionCreators(actions, dispatch);
}, [actions, dispatch]);
}
And now we can use this whenever.
const actions = useActions({ increment, decrement, set });
A similar function was originally included in an alpha of React Redux, but was ultimately removed for reasons.