javascript - 如何将 Ant 树设计中的 TreeNode 作为链接?
问题描述
我有一个来自 Ant Design 的树设计,一切都完成了,但是在某些特定的地方我希望树节点充当链接,尝试直接提供链接,但没有成功。
array.map((node) => {
if(node.type !== 'last') {
<TreeNode title={item.name} key={item.id} dataRef={item} />
} else{
<Link className="container" to={{ pathname: 'somepath'}}></Link>
}
})
解决方案
不确定我是否完全理解您的需求,但可能会将链接作为标题传递:
<TreeNode
title={<Link className="container" to={{ pathname: 'somepath'}}>{item.name}</Link>}
key={item.id}
dataRef={item}
/>
够好吗?
TreeNode api中还有回调onCheck
,可以重定向到特定的 url,即:onSelect
class LinkAbleTreeNode extends PureComponent {
onCheck = () => {
props.history.push(props.url)
}
render() {
return <TreeNode title={item.name} key={item.id} dataRef={item} onCheck={this.onCheck} />
}
}
export default withRouter(LinkAbleTreeNode);
并将 url 作为道具传递:
<LinkAbleTreeNode /*...tree node args... */ url='somepath' />
此解决方案需要将 withRouter hoc添加到应用程序中。但是,如果您在父组件中有可用的路由器道具,则可以将它们传递出去。
更新
对于 antd v4,仅title
使用自定义组件传递 prop 是可接受的解决方案。
推荐阅读
- angular - NGXS - 错误:属性没有初始化程序,并且没有在构造函数中明确分配
- python - python程序打印可能的最小数字例如:输入23780输出:20378
- android - 如何为绘图/素描创建自定义视图(画布),可以像在 Evernote 应用程序中一样在任何方向上无限滚动/拖动
- python - Django 管理员“现场查看”返回 NoReverseMatch,但 url 都可以在其他地方工作
- laravel - 在 laravel 仪表板和颤振应用程序之间建立聊天系统的最佳方法是什么
- ios - 想在 iOS 中使用 RxSwift 做搜索过滤器
- sql - SQL 开发人员由于某种原因缺少逗号错误。以前工作得很好
- javascript - JSON 文件数组帮助 discord.js
- roblox - 使用 Body Movers 的网球物理
- python - 我尝试创建一个 db usign python 和 django 并有一个不执行的方法“DELETE”并在邮递员中返回错误 500