Учитывая следующий фрагмент кода, я пытаюсь получить (журнал консоли) текстовые значения в <li>, но все равно получаю undefined. Я пробовал различные решения на SO, но безрезультатно.
export class List extends React.Component<{}, IState> {
constructor(props) {
super(props);
this.state = {
list: ['top', 'middle', 'bottom']
}
this.updateReview = this.updateReview.bind(this);
}
updateReview = (e) => {
// e.preventDefault()
console.info(e.target.value);
// console.info(e.currentTarget.id);
}
render() {
let { list } = this.state;
return (
<div>
{list.map((value, key) => {
return (
<li onClick = {(x)=>this.updateReview(x)} key = {key}>
{value}
</li>
);
})
}
</div>
);
}
}вы устанавливаете list равным this.state, затем перебираете состояние, НЕТ - массив комментариев.
Кстати, нет необходимости связывать updateReview, поскольку вы вызываете его из стрелочной функции в render.
мои извинения. ive изменил «комментарии» на «список». Я просто создавал демонстрацию для stackoverflow
В показанном коде просто передайте value в updateReview напрямую: onClick = {() => this.updateReview(value);}. Нет причин для этого проходить через DOM.
Замените onClick = {(x)=>this.updateReview(x)} на onClick = {()=>this.updateReview(value)}, затем в updateReview просто зарегистрируйте value, e.target не требуется.
Спасибо! Мышление было основано на ценностях «формы».



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Элементы, не являющиеся полями формы, не имеют
value. Так же, как и в ячейках таблицы (см. Ответы на связанные вопросы), элементыliимеют содержимое, но не элементыvalue.