Ошибка маршрута в приложении реакции при использовании mobx - PullRequest
1 голос
/ 07 марта 2019

Я сразу же получаю ошибку маршрута React, когда вставляю ссылку на код в хранилище Mobx (const len).Например:

import React, { Component } from "react";
import { observer, inject } from 'mobx-react';

@inject('store') @observer class App extends Component {
  render() {
    const len = store.goods.length
    return (
      <div>
        <h1>App is there</h1>
        <fieldset>
          <legend>Done</legend>
          { len }
        </fieldset>
      </div>
    );
  }
}

Если я удаляю его (store.goods.lenght), он работает, если он есть, я не могу добраться ни по какому маршруту.Это выставляет мне следующую ошибку:

The above error occurred in the <App> component:
    in App (created by inject-App-with-store)
    in inject-App-with-store (created by Route)
    in Route (created by View)
    in Provider (created by View)
    in View
    in Router (created by BrowserRouter)
    in BrowserRouter

<Provider/> здесь взято из mobx.

ОБНОВЛЕНИЕ

После того, как я добавил декоратор@withRouter до объявления App class эта ошибка в консоли исчезла.Но это не решило проблему, поскольку на данный момент он просто не может отобразить маршрут, например, говоря:

Cannot GET /notes

Кто-нибудь сталкивался с таким случаем?

1 Ответ

1 голос
/ 08 марта 2019

Не могли бы вы опубликовать, что говорит часть "Произошла ошибка [...]"? Но я должен был догадаться, возможно, вы обращаетесь к хранилищу без его объявления в компоненте? Для меня это выглядит так:

@inject('store') @observer class App extends Component {
  render() {
    const len = this.props.store.goods.length
    return (
      <div>
        <h1>App is there</h1>
        <fieldset>
          <legend>Done</legend>
          { len }
        </fieldset>
      </div>
    );
  }
}

Возможно, было бы неплохо добавить туда также нулевую / неопределенную регистрацию, если только вы абсолютно не гарантируете, что товар является частью магазина.

...