解决您的问题可能为时已晚,您可能已经解决了。但是,这是我的看法:
第一:
<link to="/page">和之间有什么区别<a href="page">
- 从表面上看,您似乎在这里比较苹果和橙子。锚标记中的路径是相对路径,而的标记中的路径
link
是绝对路径(没错,我认为react-router
目前尚不支持相对路径)。这造成的问题是说您正在上/blah
,在单击您的link
将要进入的位置时/page
,单击<a href='page' />
将您转到/blah/page
。尽管由于您确认了url的正确性,但这可能不是问题,但请注意。 - 还有一点更深的区别,那就是@Dennis答案(以及他所指向的文档)的附加内容,是当您已经处于与
link
要点匹配的路线中时。假设我们当前处于启用状态/page
,并且link
指向/page
甚至指向/page/:id
,这不会触发整个页面刷新,而<a />
标记自然会刷新。参见Github上的问题。
我用来解决此问题的一种解决方法是将
state属性传递给link这样
<link to={{pathname: "/page", state:"desiredState"}}>Page</link>。然后,可以像下面这样在目标组件的(say <Page/>)中检查它
componentWillReceiveProps:
componentWillReceiveProps(nextProps){ if (nextProps.location.state === 'desiredState') { // do stuffs }}第二个问题:
React Router v4文档中的奇怪箭头功能…我在普通括号中没有找到任何内容,而不是括号。这些是什么?
箭头功能;@Dennis和@Jaromanda X再次解决了该问题。但是,我要添加三点:
- 如果
() => blah
没有花括号{},则=>
在这种情况下,您将隐式返回任何内容blah
。但是,当您紧接箭头后的花括号时,return
如果您愿意,现在这是您的责任。因此() => blah
(顺便说一句是的同义词() => (blah)
)将() => { return blah }与not 更相似() => { blah }。 - 所以,如果你想返回一个对象会发生什么:
{ blah: blah }; 这就是@Jaromanda X所指的。然后,您将需要执行此操作() => ({ blah: blah })或仅() => ({ blah })进行隐式返回,或者可以像这样显式返回() => { return { blah: blah } }。 - 我的第三点是将您指向MDN
希望能帮助到你。



