我想要的是呈现这样的 HTML <a href="/page/my-cool-slug">My cool Slug</a>
。
这意味着有人可以右键单击该链接并在新选项卡中打开。这将绕过 react-router 提供的花哨的 pushState 东西。
但是,如果有人经常点击,我需要更新 redux 来说明新的 slug 是什么(或分页页面或其他)并调用browserHistory.push(...)
.
必须有一种更简单方便的方法。几乎所有这些都没有乱七八糟的东西。这是我的应用程序的样子:
// imports
import { browserHistory } from 'react-router'
import changeSlug from './actions'
// the function
makeURL(thing) {
return `/page/${thing.slug}`
}
// this click method
handleClick(event, thing) {
event.preventDefault()
this.props.dispatch(changeSlug(thing.slug))
browserHistory.push(`/page/${thing.slug}`)
}
// the JSX
<a href={makeURL(myobject)}
onClick={(event) => handleClick(event, myobject)}
>Go to {myobject.title}</a>
另外,我尝试event.target
在事件处理程序中使用来获取a.href
属性,但是因为<a>
标签包含<span>
元素,所以我在元素内单击event.target
的标签。<span>
<a>