Когда мы визуализируем компоненты react из итерируемого с помощью Array.prototype.map() как генерируется индекс и как react его использует?

#javascript #html #reactjs

#javascript #HTML #reactjs

Вопрос:

Я хотел бы знать, оказывает ли содержимое итерационного объекта какое-либо влияние на генерируемый индекс, например, если итерационные объекты имеют идентичные значения ключей, будут ли они генерировать идентичные индексы или это повлияет на принятый ключ prop?

пример, я использовал этот массив:

 [
  {id: 1, bank: "HDFC", account:"345345"},
  {id: 1, bank: "Stabdard_Chartered", account:"678567"},
]
  

Я хочу знать, имеет ли индексный аргумент map () какую-либо зависимость от первого аргумента / item. Как я наблюдал совсем недавно. Все элементы в массиве имели тот же идентификатор, что и 1, и ключи были автоматически преобразованы в .$ 1 по какой-то причине, однако, когда мы изменили id на уникальные значения, он начал работать, как ожидалось

Комментарии:

1. Я хочу знать, имеет ли индексный аргумент map () какую-либо зависимость от первого аргумента / item. Как я наблюдал совсем недавно. Все элементы в массиве имели тот же идентификатор, что и 1, и ключи были автоматически преобразованы в .$ 1 по какой-то причине, однако, когда мы изменили id на уникальные значения, он начал работать, как ожидалось

Ответ №1:

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

 {array.map((item) => {
    return <p key={item.id}>{item.name}</p>
}) 
  

Вы также можете использовать index of map в качестве своего ключа, хотя многие советуют этого не делать, индекс является вторым (необязательным) аргументом, передаваемым карте следующим образом

 {array.map((item, index) => {
    return <p key={index}>{item.name}</p>
}) 
  

Комментарии:

1. Я хочу знать, имеет ли индексный аргумент map() какую-либо зависимость от первого аргумента / item. Как я наблюдал совсем недавно. Все элементы в массиве имели то же самое, id что и 1, и ключи были автоматически преобразованы в .$1 по какой-то причине, однако, когда мы изменили id на уникальные значения, он начал работать, как ожидалось.

Ответ №2:

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

 objects.map(objs,index) => { return <Obj key={index} /> }
  

Комментарии:

1. Я хочу знать, имеет ли индексный аргумент map () какую-либо зависимость от первого аргумента / item. Как я наблюдал совсем недавно. Все элементы в массиве имели тот же идентификатор, что и 1, и ключи были автоматически преобразованы в .$ 1 по какой-то причине, однако, когда мы изменили id на уникальные значения, он начал работать, как ожидалось

2. Нет, аргумент index не зависит от элемента. Аргумент index — это новое число для каждого нового элемента. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…