Merge pull request #19672 from alecmerdler/react-redux-wrappedcomponent

[react-redux] Add missing WrappedComponent
This commit is contained in:
Arthur Ozga
2017-09-14 13:01:26 -07:00
committed by GitHub
2 changed files with 23 additions and 1 deletions

View File

@@ -37,7 +37,7 @@ interface AdvancedComponentDecorator<TProps, TOwnProps> {
export interface InferableComponentEnhancerWithProps<TInjectedProps, TNeedsProps> {
<P extends TInjectedProps>(
component: Component<P>
): ComponentClass<Omit<P, keyof TInjectedProps> & TNeedsProps>
): ComponentClass<Omit<P, keyof TInjectedProps> & TNeedsProps> & {WrappedComponent: Component<P>}
}
// Injects props and removes them from the prop requirements.

View File

@@ -569,3 +569,25 @@ namespace TestDispatchToPropsAsObject {
const Header = connect(mapStateToProps, dispatchToProps)(HeaderComponent);
<Header />
}
namespace TestWrappedComponent {
type InnerProps = {
name: string,
};
const Inner: React.StatelessComponent<InnerProps> = (props) => {
return <h1>{props.name}</h1>;
}
const mapStateToProps = (state: any) => {
return {
name: "Connected",
};
};
const Connected = connect(mapStateToProps)(Inner);
// `Inner` and `Connected.WrappedComponent` require explicit `name` prop
const TestInner = (props: any) => <Inner name="Inner" />;
const TestWrapped = (props: any) => <Connected.WrappedComponent name="Wrapped" />;
// `Connected` does not require explicit `name` prop
const TestConnected = (props: any) => <Connected />;
}