#react-hooks
Вопрос:
Я пытаюсь привязать идентификатор контакта в поле контакта, щелкнув строку таблицы. отфильтровал и связал данные из API в строке таблицы. Если я нажму на строку, вы хотите привязать идентификатор контакта в поле «Контакт». Вот код. Пожалуйста, помогите мне сделать это.
Вот функция фильтрации и отображения.
const displayList = contact
.filter((contact) => {
const firstName = contact.firstName;
const lastName = contact.lastName;
const fullName = `${firstName} ${lastName}`;
if (searchTerm === "") {
return contact;
} else if (fullName.toLowerCase().includes(searchTerm.toLowerCase())) {
return contact;
}
})
.map((contact, index) => {
const firstName = contact.firstName;
const lastName = contact.lastName;
const fullName = `${firstName} ${lastName}`;
return (
<tr key={index}>
<td style={{ width: "1%" }}>{contact.id}.</td>
<td style={{ width: "5%" }}>{contact.contactID}</td>
<td style={{ width: "5%" }}>{fullName}</td>
</tr>
);
});
Вот форма:
<div className="form-group col-md-6 ml-1">
<label htmlFor="Category">Contact Id</label>
<Field
type="text"
className={`form-control form-control-sm ${
getError(UserError, Usertouched, "contactId")
? "is-invalid"
: ""
}`}
name="contactId"
value={Uservalue.contactId || ""}
></Field>
<button
className="btn btn-primary openModalBtn"
type="submit"
onClick={() => {
setModalOpen(true);
}}
>
Search
</button>
{modalOpen ? (
<div className="card shadow">
<div className="card-body">
<div className="row">
<div className="col-lg-8 mt-3">
<form>
<input
type="text"
className="form-control"
placeholder="Search here"
value={searchTerm}
onChange={onChangeSearchTitle}
/>
{/* <button type="submit"><i class="fa fa-search"></i></button> */}
</form>
</div>
</div>
</div>
</div>
) : null}
{searchTerm ? (
<div className="table-responsive mt-5">
<table className="table table-striped">
<thead>
<tr>
<th style={{ width: "1%" }}>id</th>
<th style={{ width: "5%" }}>Contactid</th>
<th style={{ width: "5%" }}>Name</th>
</tr>
</thead>
<tbody>{displayList}</tbody>
</table>
</div>
) : null}
<ErrorMessage
name="contactId"
component="div"
className="invalid-feedback"
/>
</div>
Ответ №1:
Использование состояния локального компонента позволит вам достичь этого, например:
function ContactPage() {
const [contactId, setContactId] = useState()
...
<tr key={index} onclick={() => setContactId(id)}>
...
}
Комментарии:
1. Если вы хотите получить какую-либо помощь, вы должны предоставить подробную информацию. Что значит «это не работает»? У вас были какие-нибудь ошибки? Как вы реализовали это решение? Лучшее, что вы можете сделать, это создать CodeSandbox с проблемой или предоставить ссылку на GitHub.