Невозможно использовать инъекцию без наблюдателя

В настоящее время я использую типизированный React (TSX) и MOBX для управления состоянием.

Я могу создать компонент, который использует декораторы и наблюдателя, и инжектора. Но я не могу построить компонент, который использует инъекцию без наблюдателя.

Это передает компилятор машинописи

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 без наблюдателя на самом деле является недопустимой комбинацией.

1 ответ

Я думаю, что ваша ошибка исходит из этого:((props: Props)...при использовании инъекции таким образом, я считаю, что она ожидает функцию, попробуйте использовать ее следующим образом:
export const DealershipBreadCrumb = inject('SystemDataStore')((props => {

Кстати, не забывайте, что если вы хотите использовать инъекцию без наблюдателя, она будет внедрять последние значения этого хранилища, но не будет знать о каких-либо изменениях значений.

Другие вопросы по тегам