синхронизировать реквизиты React Router с MobX Store - PullRequest
1 голос
/ 11 апреля 2019

Я хочу перенаправить, когда регистрация не удалась в реакции.
И я использую Mobx.
Так что есть вопрос по этому поводу.
Когда я ищу редирект, люди говорят, что используют следующий код.

this.props.history.push("/");

это работает, когда находится в своем собственном компоненте.
Но в моем случае я запускаю это в действии магазина mobx.
Кроме того, this.props не является компонентом реквизита маршрутов.
Поэтому мне интересно, как я могу прочитать историю маршрута через магазин mobx.
Большое вам спасибо!

// In the mobx store

 @action submitSignIn = () => {
    axios
      .post('auth/join', { email: this.initialState.register.email })
      .then((response) => {
        if (response.data === true) {
          this.props.history.push('/signin');
        }
      .catch((error) => {
        console.log(error);
      });
  };

1 Ответ

1 голос
/ 11 апреля 2019

Один из способов сделать это - вручную создать объект history с функцией createBrowserHistory из библиотеки history и передать этот объект history пропу *.1007 *Router компонент.

Затем вы можете использовать этот объект history в любом месте вашего приложения для программного управления маршрутизацией.

Пример

import { createBrowserHistory } from "history";
import { Router } from "react-router-dom";

const history = createBrowserHistory();

class Store {
  // ...

  @action submitSignIn = () => {
    axios
      .post("auth/join", { email: this.initialState.register.email })
      .then(response => {
        if (response.data === true) {
          history.push("/signin");
        }
      })
      .catch(error => {
        console.log(error);
      });
  };
}

ReactDOM.render(
  <Router history={history}>
    <App />
  </Router>,
  document.getElementById("app")
);
...