Функция map
используется для итерации массива, передавая элементы массива один за другим в функцию обратного вызова и возвращая значения, возвращенные в функции обратного вызова.Как вы можете видеть здесь, правило с React состоит в том, что каждый дочерний элемент, созданный в этой итерации, должен иметь уникальный key
.
Теперь массив, который выполняет функция map
(повторяется), является результатом (или возвращаемым значением) Object.keys
, который возвращает массив ключей в назначенном объекте.В вашем случае возвращаемое значение Object.keys(sortByOptions)
будет
[
'Best Match',
'Highest Rated',
'Most Reviewed'
]
Так что итерация (зацикливание) этого массива - это то, что делает ваша функция renderSortByOptions
.
Переменная, созданная внутри функции обратного вызова, по сути является значением ключа в объекте sortByOptions
.Таким образом, для первого элемента в итерации значение sortByOptions[sortByOption]
равно best_match
, второе - rating
, а третье - review_count
;
В основном результат этой функции будет
<li key="best_match">Best Match</li>
<li key="rating">Highest Rated</li>
<li key="review_count">Most Reviewed</li>
конечно, они должны быть потомками <ul>
, о котором заботятся внутри функции рендеринга
<ul>
{this.renderSortByOptions()}
</ul>
Надеюсь, что это немного прояснит:)