Подкомпонент React Table возвращает другую таблицу

У меня есть приведенная ниже таблица React, в которой у меня есть данные в основной таблице, и если вы нажмете на любую стрелку, я покажу другую таблицу под этой строкой. Проблема заключается в том, какую строку вы нажимаете, мне нужно сделать запрос API, получить данные, а затем отобразить. Проблема заключается в том, что возврат внутри this.getDetail не вносит визуальных изменений в подкомпонент. console.info(result) распечатайте правильный массив, полученный из API. Я уже настроил this.getDetail в async-await и работаю с промисом для получения данных. Как я могу исправить это, чтобы отображались полученные данные? Ниже подкомпонент просто возвращает 1

<ReactTable
  data = {dataArray}
  columns = {columns}
  defaultPageSize = {5}
  noDataText = "No Data"
  SubComponent = {row => {
    this.getDetail(
      row.original.cusip,
      row.original.description,
      detailColumns
    ).then(function(result) {
      console.info(result);
      return (
        <ReactTable
          defaultPageSize = {5}
          noDataText = "No Data"
          columns = {detailColumns}
          // data = {Array.from(myDetail)}
          //resolveData = {data => console.info(data)}
          //style = {{ height: "400px" }}
          //showPagination = {false}
        />
      );
    });
    return 1;
  }}
/>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
489
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно привести данные в состояние. И как только ваш запрос API ответит, установите ответ в состоянии.

Итак, ваш код ReactTable будет таким

<ReactTable
  data = {this.state.dataArray}
  ...
  .../>

Поэтому, когда состояние обновляется через this.setState({ dataArray: apiResonse });, ваша ReactTable будет отображаться.

спасибо, но это не сработает, вот почему. Итак, скажем, первая строка, я щелкнул стрелку, получил данные и отобразил. Пока в этой строке отображаются дочерние данные, я щелкнул вторую строку, тогда данные первой строки будут пустыми, пока я извлекаю вторую строку...

Extelliqent 05.06.2019 17:37

Вы должны сохранить всю информацию строки без изменений в состоянии, данные подстроки должны быть добавлены как новый ключ под каждой строкой. Таким образом, в вашем случае, как только вы извлечете подстроки строки 1, они будут сохранены в состоянии, снова когда вы извлечете данные подтаблицы строки 2, они будут добавлены в качестве нового ключа в строке 2 в состоянии. Таким образом, у вас будут данные для всех подтаблиц, которые вы нажали. @Extelliqent

kiranvj 05.06.2019 17:59

Он по-прежнему не отображается, потому что к тому времени, когда я установил данные, он уже прошел через код таблицы реагирования, поэтому он вылетает, говоря, что предоставленные данные не определены. React Table не ждет возврата запроса...

Extelliqent 05.06.2019 20:45

Вы установили данные ответа в состояние. Если состояние обновляется, ReactTable повторно отображает обновленные данные.

kiranvj 06.06.2019 10:24

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