react-route

本文详细介绍了React Router的使用方法,包括不同history类型如browserHistory、hashHistory和createMemoryHistory的应用场景,以及如何设置路由和组件加载,探讨了路径匹配及组件异步加载的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hash 部分(指的是 # 后的部分)
如#/inbox

如果需要在 Home 路由被渲染后才激活的指向 / 的链接,请使用<IndexLink to="/">Home</IndexLink>

/ 首先我们需要导入一些组件…

import { Router, Route, Link } from 'react-router'

<Link to="/about">About</Link>

{this.props.children}

import React from 'react'
import { render } from 'react-dom'
import { browserHistory, Router, Route, IndexRoute } from 'react-router'

import App from '../components/App'
import Home from '../components/Home'
import About from '../components/About'
import Features from '../components/Features'

render(
  <Router history={browserHistory}>
    <Route path='/' component={App}>
      <IndexRoute component={Home} />
      <Route path='about' component={About} />
      <Route path='features' component={Features} />
    </Route>
  </Router>,
  document.getElementById('app')
)



一个 history 知道如何去监听浏览器地址栏的变化,
并解析这个 URL 转化为 location 对象,
然后 router 使用它匹配到路由,最后正确地渲染对应的组件。


常用的history三种形式
browserHistory
hashHistory
createMemoryHistory

可以从 React Router 中引入它们:

// JavaScript 模块导入(译者注:ES6 形式)
import { browserHistory } from ‘react-router’

然后将它们传递给:

render(
,
document.getElementById(‘app’)
)


browserHistory
Browser history 是使用 React Router 的应用推荐的 history。它使用浏览器中的 History API 用于处理 URL,创建一个像example.com/some/path这样真实的 URL 。


hashHistory
Hash history 使用 URL 中的 hash(#)部分去创建形如 example.com/#/some/path 的路由。


createMemoryHistory
Memory history 不会在地址栏被操作或读取。这就解释了我们是如何实现服务器渲染的。


React Router 里的路径匹配以及组件加载都是异步完成的,不仅允许你延迟加载组件,并且可以延迟加载路由配置。

webpack 这类的代码分拆工具使用
https://webpack.js.org/


REQUIREJS
添加 require.js 到 scripts 目录
在 main.js, 你可以使用 require() 来加载所有你需要运行的scripts. 这可以确保你所有的scripts都是在这里加载的

require('./expample.js).default
require 可以动态加载,也就是说你可以通过判断条件来决定什么时候去 require

补充:
最后,require和require.default…当在node中处理ES6 模块(export default mycomponent)导入的时候,导出的模块格式为

{ "default": mycomponent }
import 语句正确地为你处理了这个问题,然而你必须自己执行
require("./mycomponent").default. HMR(热更新模块)不在 inline模式工作的情况下,接口代码不能使用 import ,如果你想避免,使用module.exports而不是export default;

上文提到过,export 关键字是导出一个对象,对象内存在一个属性(我们要暴露的),export default 则是 export
语法糖,import 一个export default
暴露出来的模块包含了解构赋值的步骤,所以在node中使用require去请求一个export
default的模块需要我们通过.语法去取出对象中的属性(因为require木有解构赋值),清晰明了。

换个说法,如果 require 的 commonjs规范的模块,即: 导出:

// a.js 
module.exports = {   
a:'helloworld' 
} 

导入:

// b.js 
var m = require('./a.js');
 console.log(m.a); // helloworld

这样就显得非常清晰,我们 module.exports 的是啥,require 的就是啥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七灵微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值