0

現在、状態管理に typed 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>'

このエラーメッセージの頭と尾を作るのを手伝ってください。私の賭けは、タイピングが時代遅れか何かであるということです。または、オブザーバーなしでの注入の使用は、実際には無効な組み合わせです。

4

1 に答える 1

0

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

ところで、オブザーバーなしで注入を使用する場合は、そのストアの最後の値を注入しますが、値の変更を認識しないことを忘れないでください。

于 2016-11-10T09:25:59.280 に答える