this
внутри этой стрелочной функции будет относиться к компоненту, отображающему это, а не к экземпляру Component
, который вы визуализируете.
Вместо value
вы можете использовать i
. Поскольку он объявлен в операторе for
с let
, для каждой l oop итерации создается * другое i
(да, действительно). Итак:
createComponents(n) {
let list = [];
for (let i = 0; i < n; i++) {
list.push(
<Component
key={i}
onClick={() => {
handleClick(i);
}}
/>
);
}
return list;
}
Если по какой-то причине value
и i
не такие же, как в вашем вопросе, вы можете использовать локальную константу (или переменную) в блоке for
для захвата значения value
:
createComponents(n) {
let value = 0;
let list = [];
for (let i = 0; i < n; i++) {
const thisValue = value;
list.push(
<Component
key={thisValue}
onClick={() => {
handleClick(thisValue);
}}
/>
);
++value;
}
return list;
}
Поскольку это объявлено с const
, оно локально для области блока, созданной для каждой итерации (просто как i
). Это было бы верно, если бы вы использовали let
(но не var
).