SPA 全名 Single Page Applications
只有一个 HTML 档,其他都是框架编译出来的
更改路径时实际上是改变页面中不一样的地方,
即藉由 url 切换 component,
有别於传统的多页式网站(MPA,Multi-Page Applications)
使用上与应用程序更加相近。
由於 React 本身主要是
用以实作使用者介面的 library
如果需要处理 url 切换页面等路由行为
大多会搭配 React 官方开发的 React Router。
Link
、BrowserRouter
、HashRouter
、StaticRouter
等react-router-dom
时会自动一并安装 react-router
在实际操作中会搭配两者使用,
以下介绍一些常见方法。
设定彼此对应的路径和元件
<Route path="路径" component={ 用来当页面的元件名称(不是标签) } />
假如 Route 没有写 path 或是path='*'
, 并且排在前面的Route都没被吻合的话就会被渲染,可以拿来制作预设页面(404 not found)
<Route path="*">
<NoMatch404 />
</Route>
path 除了既定网址外也可接受参数
写法为 :参数名称
<Route path="/:id" component={SecondPage}/>
参数也能设定为可选,
即使没给参数,
还是可以导向相同页面
<Route path="/:id?" component={SecondPage}/>
<Route path="/second" render={()=>{return( <SecondPage id={5}/> )}}/>
原本绑component的方式是透过React.creactElement的方式创造元件。而这种绑render的方式等同於你在Route的props中制造并呼叫一个「渲染的元件的function」
Route 会将和你要求相符的参数整理成一个叫 match 物件,并放在该页面 component 的 props 中。读取该路径参数的方法为
props.match.params.id
<a>
实际渲染时 <Link>
会转成<a>
,
并根据前端路由导向正确 href。
<a>
的根路径则无法根据前端 router 去更动,
而 Link 可以。
to 可以接受字串或是物件(location object)
字串
<link to="http://test.com" />
物件
<Link to{{
pathname: '/product',
search: '?sort=asc',
hash: '#hash',
state: { isMemeber: true }
}} />
透过activeClassName="active" ,来设定与当前URL吻合时的项目要套用active样式 ,可以想成是进阶版的link
<NavLink activeClassName="active" to="/b">b page</NavLink>
让第一个吻合url的component被渲染,如果没有switch,所有吻合的component都会被渲染
Switch会把前面所提像是location这些传给route元件的props传给Layout,我们就能在Layout元件中根据不同路由参数呈现不同功能/样貌
用来重新导向,不会改变原有的网址
<Redirect to="/intro" />
又被称作默认路由,
适合用在建立巢状路由。
如下范例所示,IndexRoute 组件没有 path 属性,
而是只有当其父路由的所有其他子路由
(IndexRoute 的所有兄弟路由)都没有激活时,
才会成为父路由的 this.props.children 并显示出来。
import { Router, Route, hashHistory, IndexRoute } from 'react-router'
import Home from './modules/Home'
// ...
render((
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="/boys" component={Boys}>
<Route path="/boys/:boyName" component={Boy}/>
</Route>
<Route path="/girls" component={Girls}/>
</Route>
</Router>
), document.getElementById('app'))
如果使用 <Link to="/">Home</Link>
这个连结会始终处於激活状态,
因为所有 URL 的开头都是 /
。
如果需要 Home 路由被渲染後才激活,
指向 /
连结,可使用 <IndexLink>
。
<IndexLink to="/">Home</IndexLink>
react router 的 History 方法主要有三种:
主要推荐的 history 方法,
使用浏览器的 History API 来处理 URL,
最接近一般使用者习惯的 router。
使用 URL 中的 hash(#)来创建路由,
网址会类似於 example.com/#/some/path
。
不需要任何服务器相关配置就可以使用,
适合刚入门的初学者,
但不推荐在实际网站中使用这种方式。
Memory History 无法在网址栏被操作或读取,
适合用於测试或其他
如 React Native 的渲染环境。
与其他两种 history 最大区别在於,
Memory History 会维护自己的 location,
并依赖浏览器来储存 location 阵列。
在进入机器学习之前,想先大家深入了解一些 python 的进阶操作。接下来的操作会有点抽象,请好好品...
这个看起来很像HTML的标签语法,但实际上他是JavaScript的语法所扩充出来的 JSX语法 c...
为什麽要写这篇呢? 新任务开发总会遇到一些麻烦的前置动作(ex. 设计DB schema 、建立t...
定义中间件 请使用Artisan 命令:make:middleware php artisan ma...
Azure Sentinel会收集储存在资料表中的记录资料。Azure Sentinel中的[记录]...