react-redux-typescript-guide icon indicating copy to clipboard operation
react-redux-typescript-guide copied to clipboard

`bindActionCreators` example is outdated

Open gocreating opened this issue 5 years ago • 0 comments
trafficstars

The example of bindActionCreators does not pass generic parameters. Either, optionally pass only one generic parameter: bindActionCreators<ActionCreatorsMapObject<Types.RootAction>>.

Without generic parameters, react component will report not assignable error. The latest redux's bindActionCreators also accepts exact 2 generic parameters. So the example seems outdated.

My current workaround is bindActionCreators<any, any>:

const mapStateToProps = (state: RootState) => ({
  ...
});

const mapDispatchToProps = (dispatch: Dispatch<RootAction>) => bindActionCreators<any, any>({
  ...
}, dispatch);

type Props = ReturnType<typeof mapStateToProps> & ReturnType<typeof mapDispatchToProps>

But the Props is then inferred as type any, which is unacceptable for me. If I change to bindActionCreators<any, ActionCreatorsMapObject<RootAction>>, then my react component starts to report not assignable error again...

const MyComponent: React.FunctionComponent<Props> = ({ ... }) => {
  ...
};

MyComponent.propTypes = {
  ...
};

export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);

I am really confused about the correct usage of bindActionCreators. Anyone can help? Thanks!

gocreating avatar Jan 28 '20 08:01 gocreating