From 98feb5a0f0a3dedfacf8fdf463f668f8a39cf92d Mon Sep 17 00:00:00 2001 From: Per Bergland <2690254+perbergland@users.noreply.github.com> Date: Wed, 1 Jan 2020 00:18:49 +0100 Subject: [PATCH] Add useTracker (react-meteor-data 2.0.0 or later) (#41318) --- types/meteor/react-meteor-data.d.ts | 8 +++++++- types/meteor/test/react-meteor-data-tests.tsx | 19 ++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/types/meteor/react-meteor-data.d.ts b/types/meteor/react-meteor-data.d.ts index 517c10ff8f..8d9dabcb97 100644 --- a/types/meteor/react-meteor-data.d.ts +++ b/types/meteor/react-meteor-data.d.ts @@ -1,5 +1,11 @@ import * as React from 'react'; export function withTracker( - options: (props: TOwnProps) => TDataProps | {getMeteorData: (props: TOwnProps) => TDataProps, pure?: boolean} + options: (props: TOwnProps) => TDataProps | { getMeteorData: (props: TOwnProps) => TDataProps; pure?: boolean }, ): (reactComponent: React.ComponentType) => React.ComponentClass; + +/** + * Hooks (React 16.8 or later) version of tracker. + * Requires react-meteor-data 2.0.0 or later + */ +export function useTracker(getMeteorData: () => TDataProps, deps?: React.DependencyList): TDataProps; diff --git a/types/meteor/test/react-meteor-data-tests.tsx b/types/meteor/test/react-meteor-data-tests.tsx index cea13d6030..e9dba49a1b 100644 --- a/types/meteor/test/react-meteor-data-tests.tsx +++ b/types/meteor/test/react-meteor-data-tests.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { withTracker } from 'meteor/react-meteor-data'; +import { withTracker, useTracker } from 'meteor/react-meteor-data'; interface DemoComponentContainerProps { status: string; @@ -10,9 +10,7 @@ interface DemoComponentData { result: string; } -const DemoComponent: React.SFC = (props) => ( -
{props.data}
-); +const DemoComponent: React.SFC = props =>
{props.data}
; const DemoComponentContainer: React.ComponentClass = withTracker< DemoComponentData, @@ -22,6 +20,17 @@ const DemoComponentContainer: React.ComponentClass result: 'success', }))(DemoComponent); +const HooksDemoComponentContainer = (props: DemoComponentContainerProps) => { + const trackedProps = useTracker(() => ({ + data: 'some data', + result: 'success', + })); + return ; +}; + const RootComponent = () => ( - + <> + + + );