#javascript #arrays #reactjs #json
Вопрос:
У меня есть таблица, которая возвращает данные после a .data.map()..
, как показано ниже:
{this.state.data.map((item, i) => {
return (div>
<tr>
<td>{item.id}</td>
<td>{item.name}</td>
<td>{item.symbol}</td>
И a <td>
в том же <table>
и <tr>
выше, который отображает мой модальный код с приведенным ниже кодом:
<td>
<div>
<a className="btn" href="#open-modal" title="More Details">👁</a>
<div id="open-modal" className="modal-window">
<div>
<a href={url} title="Close" className="modal-close">❌</a>
<div>Update Details</div>
<label>{item.id}</label> //WHERE I WANT TO DISPLAY MY ID
</div><a href={url}></a></div>
</div>
</td>
Теперь, когда я хочу отобразить item.id
каждую конкретную строку после открытия модального, она возвращает item.id
только 1 элемент в массиве, а не фактический item.id
.
Таким item.id
образом, in <td>
отличается от item.id
in в модальном значении. Он продолжает возвращать одно и то же item.id
для каждой строки, на которую я нажимаю. Как я могу сделать так, чтобы эти 2 значения имели одинаковое значение?
Комментарии:
1. вам нужно иметь одно состояние, в котором находится выбранный элемент . И используйте значение этого состояния внутри содержимого вашего модала .
{this.state.selectedItem.id}
Ответ №1:
Модальная ссылка только на ваш последний идентификатор на момент его отображения
Я бы предложил, чтобы у вас было состояние для хранения id
и визуализации, когда вы открываете свой модал.
Что-то вроде:
const [selectedId, setSelectedId] = useState();
<td>
<div>
<a
className="btn"
onClick={() => setSelectedId(item.id)}
href="#open-modal" title="More Details"
>👁</a>
<div id="open-modal" className="modal-window">
<div>
<a href={url} title="Close" className="modal-close">❌</a>
<div>Update Details</div>
<label>{selectedId}</label>
</div><a href={url}></a></div>
</div>
</td>
Хотя 👁
выглядит это устрашающе.