Реагируйте на заголовок набора таблиц onClick-Функция без отключения функции сортировки

#javascript #reactjs #react-hooks #react-table

Вопрос:

Как я могу установить функцию onClick в заголовок таблицы, не удаляя функцию сортировки (useSortBy), которая будет выполняться щелчком по заголовку. Вот мой код:

 function renderTableHeader() {
  const headers = headerGroups.map(headerGroup => {
    return (
      <tr {...headerGroup.getHeaderGroupProps()}>
        {headerGroup.headers.map(column => (
          <th
            {...column.getHeaderProps(
              column.sortable amp;amp; column.getSortByToggleProps()
            )}
          >
            {(column.render("Header")}
            <span>
              <i className={determineSortState(column)} />
            </span>
          </th>
        ))}
      </tr>
    );
  });
 

Ответ №1:

react-table устанавливает onClick обработчик для <th> элемента с помощью этого выражения: {...column.getHeaderProps(column.getSortByToggleProps())}

Если вы поставите onClick перед ним свой собственный обработчик, он будет переопределен. Если вы оставите его позади, он переопределит обработчик from react-table , что нарушит сортировку.

Поэтому вам нужно запустить react-table обработчик вручную в вашем переопределении, как это:

             <th
              {...column.getHeaderProps(column.getSortByToggleProps())}
              onClick={(e) => {
                //trigger the react-table header onClick manually
                  column
                  .getHeaderProps(column.getSortByToggleProps())
                  .onClick(e);

                //your onclick functionallity goes in here
                console.log("my on click");
              }}
            >
 

Комментарии:

1. Тх, это работает!

2. Как я могу заставить это работать в машинописном виде? Я получаю Property 'onClick' does not exist on type 'TableHeaderProps'.ts(2339) ошибку.