ウェブサイト検索

reactjs - モジュール ''meteor/react-meteor-data'' にはエクスポートされたメンバー 'withTracker' がありません


私は自分のMeteor-ReactプロジェクトをTypeScriptに移行しようとしています。.tsxファイルがあります:

import { withTracker } from 'meteor/react-meteor-data';

class Header extends React.Component<any,any> {
...
}

export default withTracker(() => {
  return {
    ...
  };
})(Header);

しかし、サイトは正しく表示されるのに、私はエラーが出ています:

Module ''meteor/react-meteor-data'' has no exported member 'withTracker'.

実行中のバージョン:

Local package version is up-to-date: [email 
Local package version is up-to-date: [email 
Local package version is up-to-date: barbatus:[email 
Local package version is up-to-date: barbatus:[email 
Local package version is up-to-date: barbatus:[email 
Local package version is up-to-date: [email 
Local package version is up-to-date: [email 
Local package version is up-to-date: [email 
Local package version is up-to-date: [email 
Local package version is up-to-date: [email 
Local package version is up-to-date: [email 

ご協力ありがとうございます。

回答 #1

react-meteor-data パッケージには型情報が含まれていません。このリポジトリには古い createContainer の型が含まれていますが、リポジトリは withTracker に更新されていません。

私は、プロジェクト内のどこかに次の宣言を含む .d.ts ファイルを追加することでこれを解決しました:

declare module 'meteor/react-meteor-data' {
  import * as React from 'react';

  type RMDComponentConstructor<P> = React.ComponentClass<P> | React.StatelessComponent<P>

  export function withTracker<InP, D, OutP extends (InP & D)>(
    options: (props: InP) => D | {getMeteorData: (props: InP) => D, pure?: boolean}):
    (reactComponent: RMDComponentConstructor<OutP>) => RMDComponentConstructor<InP>;
}