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-dom
dan 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.pathname
nin 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 |