From 9f4e2b51e0a9d85e3785757a757057ba08fbba01 Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Sat, 9 Nov 2019 13:59:20 +0800 Subject: [PATCH] refactor: enhance connect --- src/driver/connect.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/driver/connect.ts b/src/driver/connect.ts index 66933a3..b061f31 100644 --- a/src/driver/connect.ts +++ b/src/driver/connect.ts @@ -94,19 +94,20 @@ function link(instance: React.Component, sources: Sources): Wr } export function connect(mapping: Sources) { - return function linkComponent( - ComponentClass: React.ComponentClass, - ): React.ComponentClass { - return class AwesomeApp extends React.PureComponent { - static displayName = `Connected(${ComponentClass.displayName || ComponentClass.name})` - static defaultProps = ComponentClass.defaultProps + return function linkComponent< + State, + ComponentClass extends React.ComponentClass + >(Component: ComponentClass) { + return class ConnectedComponent extends React.PureComponent { + static displayName = `Connected(${Component.displayName || Component.name})` + static defaultProps = Component.defaultProps - state = {} as ExtraP - connectedMethods = link(this, mapping) as WrappedMethods + state: ExtraP = {} as ExtraP + connectedMethods: WrappedMethods = link(this, mapping) render() { const props = Object.assign({}, this.props, this.connectedMethods, this.state) - return React.createElement(ComponentClass, props) + return React.createElement(Component, props) } } }