Redirect

Bir <Redirect> işlevi yeni bir konuma yönlendirir. Yeni konum, HTTP 3xx gibi geçerli konumu geçersiz kılacaktır.

Redirect kullanmak için react-router-domdan import edip basitçe aşağıdaki gibi kullanabiliriz.

import { Route, Redirect } from 'react-router'

<Route exact path="/" render={() => (
  loggedIn ? (
    <Redirect to="/dashboard"/>
  ) : (
    <PublicHomePage/>
  )
)}/>

Parametreleri

to: string

Yönlendirilecek URL’i temsil eder.

<Redirect to="/somewhere/else"/>

to: object

Yönlendirilecek yeri temsil eder. pathname, regexp’in anladığı herhangi bir geçerli URL yolu olabilir.

<Redirect to={-{
  pathname: '/login',
  search: '?utm=your+face',
  state: { referrer: currentLocation }
}-}/>

GitHub Pages süslü parantezden ({) iki tane yan yana koyulduğunda hata verdiği için araya tire (-) koydum, normalde kodda o tireleri yok sayın.

state objesi, yönlendirilmiş componentte this.props.location.state yoluyla erişilebilir. Bu yeni yönlendirme anahtarı (özel bir ad değil) daha sonra, /login yol adının işaret ettiği Login componentindeki this.props.location.state.referrer üzerinden erişilebilir.

push: bool

true olduğunda yeniden yönlendirme, geçerli olan linkin yerine geçmek yerine geçmişi yeni bir giriş yapar.

<Redirect push to="/somewhere/else" />

from: string

Yönlendirilecek bir yol adını temsil eder. Regexp yolunun anladığı herhangi bir geçerli URL yoludur. Eşleşen tüm URL parametreleri desene ayarlanır. Kullanılmayan ek parametreler göz ardı edilir.

Bu, yalnızca bir içinde bir oluştururken bir konumu eşleştirmek için kullanılabilir.

<Switch>
  <Redirect from='/old-path' to='/new-path'/>
  <Route path='/new-path' component={Place}/>
</Switch>

// Eşleşen parametrelerle yeniden yönlendirme
<Switch>
  <Redirect from='/users/:id' to='/users/profile/:id'/>
  <Route path='/users/profile/:id' component={Profile}/>
</Switch>

exact: bool

Tam olarak eşleşmeyi temsil eder. Route.exact ile eşdeğerdir.

path location.pathname exact eşleşiyor mu?
/one /one/two true hayır
/one /one/two false evet

strict: bool

Kesinlikle eşleşmeyi temsil eder; Route.strict ile eşdeğerdir.

true olduğunda, eğik çizgi içeren bir yol yalnızca bir location.pathname ile başlayan ve eğik çizgi ile eşleşir. Bu, URL.pathname öğesine ek URL segmentleri olduğunda hiçbir etkisi yoktur.

path location.pathname eşleşiyor mu?
/one/ /one hayır
/one/ /one/ evet
/one/ /one/two evet

Uyarı: strict, bir location.pathnamenin sonunda eğik çizgi bulunmadığından emin olmak için kullanılabilir, ancak bunu yapmak için tam doğru olmalıdır.

path location.pathname eşleşiyor mu?
/one/ /one evet
/one/ /one/ hayır
/one/ /one/two hayır

Sıradaki Gelişmiş Kılavuz: Route