[英]Go to a link when clicked inside a Table.Row with onClick
我有一个表,我希望每一行都是可点击的,当你点击它到 go 到那个链接(每行不同)。
<Table.Body>
{rows.map((row, rowIndex) => (
<Table.Row
key={idList && idList[rowIndex]}
onClick={() => {
<Link
to={
entityName && `/${entityName}/${idList[rows.indexOf(row)]}`
}
/>;
}}>
...
</Table.Row>
))}
</Table.Body>
所以我像上面那样做了,添加了一个组件但不起作用。 它说:
预期分配或 function 调用,而是看到一个表达式 no-unused-expressions
我正在使用Semantic UI
中的Table
/ Table.Row
和react-router-dom
中的Link
。 我无法更改Table
,但Link
组件不是强制性的。 无论如何,如果它可以在单击时重定向到该链接,那就太好了。
有什么办法吗?
一种方法是使用历史从组件导航。 要获取历史 object,您需要使用可从react-router:5.1.0获得的useHistory()
挂钩,或者如果您使用的是旧版本的 react-router
功能性
const onNavigate = (entityName, idList) => () => {
entityName && history.push( && `/${entityName}/${idList[rows.indexOf(row)]}`) // change accordingly
}
Class
onNavigate = (entityName, idList) {
return function () {
return entityName && this.props.history.push( && `/${entityName}/${idList[rows.indexOf(row)]}`) // change accordingly
}
}
此方法返回 function 引用,因此onCLick
道具不会在渲染时触发它,并且some_props
将在内部function中可见
onClick
方法:<Table.Body>
{rows.map((row, rowIndex) => (
<Table.Row
key={idList && idList[rowIndex]}
onClick={onNavigate(enitityName, idList)}
>
...
</Table.Row>
))}
</Table.Body>
这样,点击处理程序将收到 function 引用,并应导航到相应的 url
使用react-router
链接到 react 应用程序内部,您可以使用useHistory
挂钩并推送新路径。
import { useHistory } from "react-router-dom";
function Component() {
let history = useHistory();
return (
<Table.Body>
{rows.map((row, rowIndex) => (
<Table.Row
key={idList && idList[rowIndex]}
onClick={() =>
history.push(
entityName && `/${entityName}/${idList[rows.indexOf(row)]}`
)
}
>
...
</Table.Row>
))}
</Table.Body>
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.