大家好,我是一名刚开始使用React Router的初学者。
我有两个问题。<Link to="/page">
和之间有什么区别<a href="page">
?两者都向完全相同的获取请求,/page
但是当我使用时收到错误,<a href="page">
但是<Link to="/page">
当我嵌套路线时使用时却可以工作。我不知道当两者都渲染为完全相同的网址时,我不知道会有什么区别
其次是React Router v4文档中的奇怪箭头功能
const About = () => (
<div>
<h2>About</h2>
</div>
)
我知道() => {}
这些是ES6中的新功能,但是我无法在括号中找到任何内容,而不是括号。这些是什么?
编辑
我的index.js类(我拥有所有导入)
render((
<Router>
<div>
<Route component={App}/>
</div>
</Router>
), document.getElementById('root')
);
我的App.js类
class App extends Component {
render() {
return (
<div className="container">
<header>
<span className="icn-logo"><i className="material-icons">code</i></span>
<ul className="main-nav">
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
<li><Link to="/teachers">Teachers</Link></li>
<li><Link to="/courses">Courses</Link></li>
</ul>
</header>
<Route exact path="/" component={Home}/>
<Route path="/about" component={About}/>
<Route path="/teachers" component={Teachers}/>
<Route path="/courses" component={Course}/>
</div>
);
}
}
export default App;
我得到的错误。 Cannot GET /about
在浏览器上尝试移至时localhost:8080/about
。但是,当我单击about
按钮时,它会转到完全相同的网址/about
并呈现完美
解决您的问题可能为时已晚,您可能已经解决了。但是,这是我的看法:
第一:
<Link to="/page">
和之间有什么区别<a href="page">
Link
是绝对路径(没错,我认为react-router
目前尚不支持相对路径)。这造成的问题是说您正在上/blah
,在单击您的Link
将要进入的位置时/page
,单击<a href='page' />
将您转到/blah/page
。尽管由于您确认了url的正确性,但这可能不是问题,但请注意。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 } }
。希望能帮助到你。
问题内容: 我在使用胖箭头功能时遇到了一些问题。如果该函数不是匿名函数,它将抱怨语法并且不会编译。 这个: 给我: 它指向等号(handleItemClick’=’)。 但是,这很好用: 我的webpack配置是否有问题,或者我缺少什么?感谢任何提示。 问题答案: 您正在尝试使用不属于ES6且es2015未涵盖的class字段,并对预设进行反应。 您可以使用Class属性transform bab
问题内容: 我知道上面的箭头功能等效于: 但是我对以下内容有些困惑 为什么函数参数用大括号括起来,而函数主体仅用括号括起来? 问题答案: ES6的一些语法糖元素在这里起作用: 参数解构 :该函数实际上使用一个对象,但是在执行该函数之前,将其唯一的对象参数解构为三个变量。基本上,如果传递给函数的参数称为obj,则为onClick变量分配obj.onClick的值,并与其他命名的分解变量相同。 简洁的
似乎有一些关于使用什么的混淆:
问题内容: Node.js是否已经支持=>函数关键字别名?如果是,请从哪个版本开始?如何启用此语言扩展? 成为 问题答案: 简而言之:是的,自版本4.4.5起,Node.js中就很好地支持箭头功能。 完全正确的支持从版本6开始。最初的支持是从v0.12开始引入的,但是它非常不完整,默认情况下处于禁用状态,直到v4.0变得更好为止。
问题内容: 这是在我的Angular代码中正常工作的ES5函数: 我想将其转换为ES6箭头功能 但是它给出了错误 ES6箭头功能是否与Angular不兼容? 编辑:我想也许Angular不能推断出该名称,因此无法注入它,但随后我将其记录到控制台,并确实显示了它: 问题答案: 正确。您的AngularJS版本与使用$ injector的箭头功能不兼容。 这主要是因为AngularJS 1.4.6使用
我正在尝试React-路由器(v4),我有问题启动的Nav有一个的。如果我单击任何标记,则活动内容开始工作。然而,我希望首页在应用程序启动后立即激活,因为这是在路由加载的组件。有什么办法可以做到这一点吗? 这是我目前的代码: