我想要的是呈现这样的 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>