【发布时间】:2016-08-23 07:56:42
【问题描述】:
我想要的是看起来像 <a href="/page/my-cool-slug">My cool Slug</a> 的呈现 HTML。
这意味着某人可以右键单击该链接并在新选项卡中打开。这将绕过 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> 元素。
【问题讨论】:
-
我从 react-router 发现了
Link,但这并不能处理新操作的调度。 -
你应该从组件调用一个动作。让链接处理路由
标签: reactjs react-router redux react-router-redux