Проблема в том, что вы вводите недопустимый HTML внутри тега tr
, и это нарушает весь макет.
Вы должны использовать td
и th
только для контролировать размер и поток вашей строки таблицы (tr
). Вы можете использовать обработчик onClick
в строке таблицы, но это было бы нежелательно для доступности, и вы бы обязательно контролировали навигацию в своем приложении .
Вот как это будет выглядеть onClick
:
const handleNavigation = () => {
// run react-router code for imperative navigation
}
/*
* Method for rendering the table
* @param {Array} TableData - Table containing the list of products
*/
renderTable = TableData => {
return TableData.map((item, i) => (
<tr key={i} onClick={handleNavigation}>
<td>1.</Link></td>
<td>{item.productName}</td>
<td>{item.description}</td>
<td>{item.department}</td>
</tr>
));
};
Я предлагаю пропустить Link
внутри каждого `td. Это не нарушило бы стиль, но также дало бы возможность пользователю щелкнуть в любом месте строки таблицы и перейти по ней соответствующим образом:
/*
* Method for rendering the table
* @param {Array} TableData - Table containing the list of products
*/
renderTable = TableData => {
return TableData.map((item, i) => (
<tr key={i}>
<td><Link to="/productServices/:productID">1.</Link></td>
<td><Link to="/productServices/:productID">{item.productName}</Link></td>
<td><Link to="/productServices/:productID">{item.description}</Link></td>
<td><Link to="/productServices/:productID">{item.department}</Link></td>
</tr>
));
};
Вот очень простой пример кода выше, на упрощенной таблице. Благодаря стилю, позволяющему сделать ссылку 100%.
Вы можете дополнительно расширить его, чтобы он стал компонентом, который вы будете использовать для переноса содержимого ячейки таблицы внутри ссылки и повторного использования в ваших таблицах.