ReactJS undefined arr.map

Я получаю данные из API, а затем использую arr.map () для фильтрации данных * (API возвращает ненужные свойства)

Это работает:

       fetchTable() {
        const url = 'http://localhost:8000/issues/assigned/';
        const value = this.state.selectedOption;
        const string = url+value;
        fetch(string)
        .then(function(response) {
          return response.json();
        })
        .then((myJson) => this.setState({data: myJson.issues}));
      }
      
      const filteredResult1 = this.state.data.map(item => (
        {
          name: item.fields ? item.fields.assignee.name : '',
          id: item.id, 
          key: item.key,
          timespent: item.fields ? this.timeConvert(item.fields.timespent) : '',
          project: item.fields ? item.fields.project.name : '',
          status: item.fields ? item.fields.status.name : '',
          created: item.fields ? item.fields.created : '',
          resolution: item.fields ? item.fields.resolutiondate : ''
        }
      ));
      
      

Но теперь мне нужно setState несколько раз, так что я могу визуализировать таблицу для каждого массива с отфильтрованными данными, но результат карты всегда не определен!

 .then((myJson) => this.setState({data: [...this.state.data, myJson.issues]}));

Это не работает:

   fetchTable() {
        const url = 'http://localhost:8000/issues/assigned/';
        const value = this.state.selectedOption;
        const string = url+value;
        fetch(string)
        .then(function(response) {
          return response.json();
        })
        .then((myJson) => this.setState({data: [...this.state.data, myJson.issues]})); 
      }
      
      
      var result = this.state.data.map((item)=>{ return {id:item.id, example: item.example}; });
      console.info(result)

ReactJS undefined arr.map

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
39
1

Ответы 1

let array1 = [
  1,2,3
];

let array2 = [
  4,5,6
]
// ...array1 is destructuring array1
// and which leads to an unexpected result
console.info([...array1, array2]);

Измените эту строку

  .then((myJson) => this.setState({data: [...this.state.data, myJson.issues]}));

к этому

.then((myJson) => this.setState({
    data: this.state.data.concat(myJson.issues)
}));

В прилагаемом коде видно, что полученный массив не соответствует вашим ожиданиям.

Привет @Vasile Florin Vilsan! Я делал это раньше, но я не хочу объединять их, так как я буду отображать таблицу для каждого массива!

zemmsoares 01.06.2018 15:15

Тогда не могли бы вы предоставить образцы данных для this.state.data и myJson.issues в [...this.state.data, myJson.issues]

Vasile Florin Vilsan 01.06.2018 15:19

У меня есть множественный выбор, как вы можете видеть const value = this.state.selectedOption;, изначально this.state.data пуст! затем для каждой выбранной опции он будет извлекать данные в this.state.data!

zemmsoares 01.06.2018 15:33

Не могли бы вы предоставить this.state.data и myJson.issues в [...this.state.data, myJson.issues] со второго раза, когда вы запустите запрос.

Vasile Florin Vilsan 01.06.2018 17:03

извините, но я не понимаю! Я загрузил изображение в третий раз, выполняя запрос.

zemmsoares 01.06.2018 17:31

Отсутствие возможности увидеть структуру возвращенных данных и данных merged не помогает мне вам помочь. Насколько я могу судить, с предоставленными данными вы не объединяете текущие данные с вновь полученными данными должным образом. Это создает несогласованность в новых данных состояния, которые вы сопоставляете. Если какой-либо из item.id или item.example в var result = this.state.data.map((item)=>{ return {id:item.id, example: item.example}; }) не определен, это может привести к тому, что карта вернет undefined.

Vasile Florin Vilsan 01.06.2018 17:54

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