Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

React-router教程的内容补充 #2

Open
GuoYongfeng opened this issue Apr 3, 2016 · 1 comment
Open

React-router教程的内容补充 #2

GuoYongfeng opened this issue Apr 3, 2016 · 1 comment

Comments

@GuoYongfeng
Copy link
Owner

React-router教程的内容补充

1.hashHistory和browserHistory的区别

React-router是基于history库来创建的。简单来讲,history可以知道如何监听浏览器地址栏的改变从而将URL解析到location对象中,这样的话,router就可以匹配到每一条routes并且正确的渲染一系列的组件。

  • hashHistory将hash(#)用做URL的一部分,创建的路由类似这样:example.com/#/some/path,使用hashHistory的话就不需要在服务端配置,可以纯前端的控制路由的切换;那么,使用hashHistory的时候出现的_k=788ds2这样的参数是什么意思呢,因为当history通过pushState或是replaceState的方式在你的应用中进行转换的时候,history会保存“location state”导致新的location不会再URL中展示出来,这有点像在HTML的form表单进行post提交数据一样。
  • Browser history 是由 React Router 创建浏览器应用推荐的 history。它使用 History API 在浏览器中被创建用于处理 URL,新建一个像这样真实的 URL example.com/some/path。

2.每一条Route中参数component和components有什么不一样

component的传入值只能为具体的组件
components的传入值可以为对象或具体的组件

3.尽量使用activeClassName来改变被触发的Link的展示样式

4.组件中是如何拿到路由相关的信息的

render(){
  console.log(this.props);
  return (.....);
}

5.this.context.route是从哪里来的

在每一条Route对应渲染的组件中都可以拿到this.context.route,这个对象上面挂载了很多API,setRouteLeaveHook这个是常用的。

6.为什么要设置组件的contextType

接口约束,如果这个组件写了调用路由相关的API进行操作,但是本身没有放在router下面进行渲染,会给出友好的提示。

@zhufengnodejs
Copy link
Collaborator

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants