Javascript функция карты дублирует значения - PullRequest
0 голосов
/ 16 января 2020

Я буду быстрым, я работаю с компонентом реагировать на нативный элемент списка, который генерирует списки элементов из массива значений с указанием ключа и значения, для этого я запускаю javascript map, что-то как это

DataManager.ResponseTravelRequestHistory != null ?
  DataManager.ResponseTravelRequestHistory.slice(-3,-1).map((value,index) => (
    <ListItem
      titleStyle={styles.titleListText}
      subtitleStyle={styles.subtitleListText}
      topDivider={true}
      bottomDivider={true}
      key={index.Id}
      leftIcon={<Image resizeMode={"contain"} width={wp("10.8")} source={images.air_transport}/>}
      title={`${TravelsBusiness.FindCityById(value.Ciudad)}`}
      subtitle={`${Moment(value.FechaSalida).format("DD/MM")} al ${Moment(value.FechaRegreso).format("DD/MM")}`}/>
  ))
  :
  null

это отфильтровывает последние 3 элемента (кроме последнего) из массива, поэтому дело в том, что всякий раз, когда я запрашиваю путешествие, весь этот вид должен отображаться и показывать мне последний запрос, который я спросил, работает, но проблема в том, что в тот момент, когда я запрашиваю второй раз, последний дублируется, поэтому получается

Duplicated values

если я закрываю приложение или закрываю сессию, данные отображаются правильно, попробуйте с помощью reverse.slice (), но похоже, что это работает еще хуже

РЕДАКТИРОВАТЬ: РЕШЕНО! дублирование было сделано в диспетчере данных, причина была в том, что lastobject был частью списка historyobject, и каждый раз, когда я делаю новый запрос, lastobject дублировался в historyobject, что немного сбивает с толку, но поскольку основная проблема не была точно связана с listitem, я хотел бы поделиться этой информацией, извините за все неудобства

Ответы [ 2 ]

1 голос
/ 16 января 2020

Вы хотите использовать key={value.Id} вместо key={index.Id}. Потому что я считаю, что это вызывает твою проблему.

0 голосов
/ 16 января 2020

array.slice (-3, -1) дает вам 2 элемента с конца, не включая последний. Например, если у вас есть такой массив a = [0,1,2,3,4], он вернет [2,3].

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...