onClick
有效,但有时<a>
由于各种原因您需要一个实际的标签:
- 无障碍
- 渐进增强(如果脚本抛出错误,链接仍然有效)
- 能够在新选项卡中打开链接
- 复制链接的能力
下面是一个接受to
prop的 Td 组件的例子:
import React from 'react';
import { Link } from 'react-router-dom';
export default function Td({ children, to }) {
// Conditionally wrapping content into a link
const ContentTag = to ? Link : 'div';
return (
<td>
<ContentTag to={to}>{children}</ContentTag>
</td>
);
}
然后像这样使用组件:
const users = this.props.users.map((user) =>
<tr key={user.id}>
<Td to={`/users/${user.id}/edit`}>{user.name}</Td>
<Td to={`/users/${user.id}/edit`}>{user.email}</Td>
<Td to={`/users/${user.id}/edit`}>{user.username}</Td>
</tr>
);
是的,您必须多次传递to
prop,但同时您可以更好地控制可点击区域,并且表格中可能还有其他交互元素,例如复选框。