2016-11-05 8 views
0

私は現在、状態管理のためにタイプされたReact(TSX)とmobxを使用しています。オブザーバーなしで注射を使用できません

私は、オブザーバと注入デコレータの両方を使用するコンポーネントをビルドすることができます。しかし、私はオブザーバを使わずに注入を使うコンポーネントを作ることはできません。これはtypescriptですコンパイラを渡す

export const DealershipBreadCrumb = inject("appStore")(observer((props: Props) => { 
    const {appStore} = props; 
    const dealership = appStore.getSelectedDealership(); 
    return (
      <div className="filter__container filter__group"> 
      <a className="filter__link" href={`cars?q=${appStore.searchResults.searchQuery}`}> 
       <span className="filter__text">{dealership.name}</span> 
      </a> 
      </div> 
    ) 
    })) 

しかしこれは、次のエラーメッセージで

export const DealershipBreadCrumb = inject("appStore")((props: Props) => { 

を失敗し

[ts] Argument of type '(props: Props) => Element' is not assignable to parameter of type 'ComponentClass<{}>'. 
    Type '(props: Props) => Element' provides no match for the signature 'new (props?: {}, context?: any): Component<{}, ComponentState>' 

このエラーメッセージの頭と尾を作る際に、私を支援してください。 。私の賭けは、入力が時代遅れであるか、何かであるということです。そうでなければ、オブザーバを使わないでinjectを使用すると、実際には無効な組み合わせになります。

+0

どの '.d.ts'ファイルが' mobx-react'に使用していますか?あなたはそれのためのリンクを持っていますか? –

答えて

0

私はあなたのエラーはここから来ていると思います:((props: Props)... 私はそれが機能を期待していると信じて、そのように注入し使用した場合、このようにそれを使用してみてください。
export const DealershipBreadCrumb = inject('SystemDataStore')((props => {

がところでもしあなたことを忘れないでくださいオブザーバを使わずにinjectを使いたいのであれば、そのストアの最後の値を注入しますが、値の変更は認識しません。

+0

これは問題ではありません。私はこのコンポーネントの場合にのみ店に書いています。 – trevorgk

関連する問題