总结起来,React-router很简单,个人只有三点:
第一点:使用Link,Redirect,browserHistory.push("url"),this.context.router.push("url”)等方法去“主动改变”浏览器的url
第二点:Router组件的history属性会随时监测浏览器url的改变,当浏览器的url改变后,就会根据当前的url,去激活对应的路由去加载对应的组件,那根据的是哪部分的url呢,这个也是history的属性值决定的,hashHistory是根据hash地址的变化也就是#号后面的地址去和Route组件的真实path路径对应,对应上了就会加载后面对应的component,browserHistory则是根据第一个/后的路径去匹配Route组件的真实path路径。(这里要注意,如果是嵌套路由,当外层路由组件内部没有返回组件的children属性时,其内定义的路由都是无效的,不会被history属性查找)
第三点:一些通配符,嵌套路由,都是为了更加灵活的去定义path。其中通配符是只要符合通配规则,就会加载对应的组件,嵌套路由可见下面写的嵌套路由的优势。
嵌套路由的优势:
1,可以在外层路由中定义一个公共的组件,那么当访问该路由下的所有子路由时,都会加载父路由对应的组件。
2,会产生相对路径的概念,便于路径的书写,子路由中path对应的路径名前如果没有/,那么该路径就是相对于父路由的路径去匹配浏览器的url
嵌套路由注意事项:
在父路由对应的组件中,一定返回该组件props中的children项,不然该路由下定义的子路由就不会被使用。
注:children属性,其实就是表示他的子组件
附:
阮大神写的react-router教程很赞(网址:http://www.ruanyifeng.com/blog/2016/05/react_router.html?utm_source=tool.lu),本文仅为个人观后总结,希望对你有所帮助
网友评论