Я пытаюсь привязать идентификатор контакта в поле контакта, щелкнув строку таблицы

#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.