javascript - 使用 onClick 在 Table.Row 中单击时转到链接
问题描述
我有一个表格,我希望每一行都是可点击的,当你点击它去那个链接(每行不同)。
<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>
所以我像上面那样做了,添加了一个组件但不起作用。它说:
期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions
我正在使用Table
/ Table.Row
fromSemantic UI
和Link
from react-router-dom
。我无法更改,Table
但该Link
组件不是强制性的。无论如何,如果它可以在单击时重定向到该链接,那就太好了。
有什么办法吗?
解决方案
一种方法是使用历史从组件导航。要获取历史对象,您需要使用react-router:5.1.0useHistory()
提供的钩子,或者如果您使用的是旧版本的 react-router
- 你将不得不添加一个方法来做到这一点:
功能性
const onNavigate = (entityName, idList) => () => {
entityName && history.push( && `/${entityName}/${idList[rows.indexOf(row)]}`) // change accordingly
}
班级
onNavigate = (entityName, idList) {
return function () {
return entityName && this.props.history.push( && `/${entityName}/${idList[rows.indexOf(row)]}`) // change accordingly
}
}
此方法返回一个函数引用,因此onCLick
prop 在渲染时不会触发它,并且some_props
由于Closures而在内部函数中可见
- 您将方法传递给
onClick
方法:
<Table.Body>
{rows.map((row, rowIndex) => (
<Table.Row
key={idList && idList[rowIndex]}
onClick={onNavigate(enitityName, idList)}
>
...
</Table.Row>
))}
</Table.Body>
这样,点击处理程序将接收到一个函数引用,并应该导航到相应的 url
推荐阅读
- json - 将 postgress 中的选择转换为返回数组而不是字符串(仅针对一行)
- javascript - react和express服务器中的css文件目录有什么区别?
- ruby-on-rails - Ruby on Rails的includes方法的使用
- sql - 按列分组并在sql上获取最大和最小ID
- curl - 使用 curl 命令时出现 InfluxDB 无效字段格式错误
- java - Android VideoView 我随机收到“无法播放此视频”错误
- python - 使用 Statsmodels MLEmodel 构建自定义状态空间模型
- flutter - 使用 ClipPath 的波浪曲线不平滑
- python - 在 for 循环中使用 udf 在 Pyspark 中创建多个列
- opengl - 如何将 glVertexAttrib3f 与 vao 一起使用?