mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-16 22:40:01 +08:00
Merge pull request #19672 from alecmerdler/react-redux-wrappedcomponent
[react-redux] Add missing WrappedComponent
This commit is contained in:
2
types/react-redux/index.d.ts
vendored
2
types/react-redux/index.d.ts
vendored
@@ -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.
|
||||
|
||||
@@ -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 />;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user