Как обновить компонент, который отображается на маршруте «response-router-dom»?

Когда мое приложение запускает componentDidMount (), я получаю данные

async componentDidMount() {
  try {
    let players = await playersDAO.read();
    this.setState({ players: players });
  } catch (e) {
    console.log(e);
  }
}

Затем покажите его на компоненте, который отображается Route из response-router-dom.

<BrowserRouter>
  <Switch>
    <Route
      key="players"
      path="/players"
      render={() => <Players rows={this.state.players} />}
    />
  </Switch>
</BrowserRouter>

Не знаю почему, но при получении данных компонент не обновляется. Может (есть большая вероятность) я что-то делаю не так, но может ли кто-нибудь мне с этим помочь?

Не по теме: я использую свойства рендеринга Route, потому что мне нужно передать реквизиты для моего компонента, кто-нибудь знает лучший способ сделать это?


person Carlos Junior    schedule 25.10.2019    source источник
comment
Я думаю, вы неправильно используете Router. Если вам нужно его обновить, для меня это означает, что это должен быть не Route, а рендеринг дерева компонентов. Маршруты похожи на теги html a.   -  person Rafael Mora    schedule 25.10.2019
comment
Routes are like html a tags похоже, вы думаете о <Link>s, @RafaelMora   -  person Nicholas Tower    schedule 25.10.2019
comment
@NicholasTower нет, я не такой. Я просто пытаюсь объяснить @CarlosJunior, что значит использовать Routes.   -  person Rafael Mora    schedule 25.10.2019
comment
@CarlosJunior: использование маршрута с path = / player означает, что компонент Players будет отображаться только в том случае, если URL-адрес заканчивается на / player, как в http://localhost:3000/players. Это то, что вы хотите? Если да, то указали ли вы для этого URL-адрес (непосредственно в адресной строке или щелкнув соответствующую ссылку)?   -  person Nicholas Tower    schedule 25.10.2019
comment
@NicholasTower точно ... когда пользователь вводит http://localhost:3000/players, он отображает данные, но если данные изменены, компонент не обновляется   -  person Carlos Junior    schedule 25.10.2019
comment
Привет! Просто проясните. Вы имеете в виду, что при первой загрузке данные страницы загружаются, но при изменении данных на сервере / базе данных данные остаются прежними?   -  person Willman.Codes    schedule 25.10.2019
comment
привет @ Willman.Codes. Я имею в виду, что когда данные получены реакцией, таблица остается пустой, потому что компонент не перерисовывается.   -  person Carlos Junior    schedule 25.10.2019
comment
Можете ли вы показать код для Players или, если Players - это внешний API / библиотека, пожалуйста, сделайте ссылку?   -  person Willman.Codes    schedule 25.10.2019
comment
Полу связано с вашим вопросом и в конечном итоге может стать проблемой: вам нужно передать реквизиты React-Router через функцию обратного вызова render={(props) => <Players {...props} rows={this.state.players} />   -  person Willman.Codes    schedule 25.10.2019
comment
[Решено] Я не использовал компонент без состояния. Я настолько увлекся проблемой, что забыл основы. Я перешел на компонент без состояния, и он начал работать   -  person Carlos Junior    schedule 25.10.2019


Ответы (1)


Вы можете вызвать маршрут после установки состояния с помощью history.push('/players').

person Bobyd    schedule 14.08.2020