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
<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, birlocation.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 |