2016-12-13 36 views
15

Ben React-Router (v4) çalışıyorum ve Link biri active olmak için Nav başlayarak sorunları yaşıyorum. Link etiketlerinden herhangi birine tıklarsam, etkin şeyler çalışmaya başlar. Ancak, / rotasında yüklenen bileşen olduğundan, uygulama başladığı anda Home Link'un aktif olmasını istiyorum. Bunu yapmanın bir yolu var mı?React-Router ile aktif bağlantı?

const Router =() => (
    <BrowserRouter> 
    <div> 
     <Nav> 
     <Link activeClassName='is-active' to='/'>Home</Link> {/* I want this to start off as active */} 
     <Link activeClassName='is-active' to='/about'>About</Link> 
     </Nav> 

     <Match pattern='/' exactly component={Home} /> 
     <Match pattern='/about' exactly component={About} /> 
     <Miss component={NoMatch} /> 
    </div> 
    </BrowserRouter> 
) 
+0

Bu cevabı daha önce gözden kaçırdım ve haklı olduğunu anladım. Bunu kabul etmenizi öneririm, böylece başka insanlar da gözden kaçırmaz. – wuno

cevap

31

<Link> artık activeClassName veya activeStyle özelliklere sahiptir:

İşte benim şimdiki kodudur. Eğer koşullu stil yapmak istiyorsanız <NavLink> kullanmak zorunda v4-yönlendirici tepki olarak:

const Router =() => (
    <BrowserRouter> 
    <div> 
     <Nav> 
     <NavLink exact={true} activeClassName='is-active' to='/'>Home</NavLink> 
     <NavLink activeClassName='is-active' to='/about'>About</NavLink> 
     </Nav> 

     <Match pattern='/' exactly component={Home} /> 
     <Match pattern='/about' exactly component={About} /> 
     <Miss component={NoMatch} /> 
    </div> 
    </BrowserRouter> 
) 

Eve <NavLink> için tam özellik eklendi, onsuz, ev bağlantısı daima olacağını oldukça eminim /'dan beri aktif olan /about ve sahip olduğunuz diğer sayfalarla eşleşecektir. Aşağıdaki soruya verilen cevap kesinlikle doğrudur.

+0

Bu cevabı bugün gözden kaçırdım çünkü NavLink'in ilk bakışta problemden kaçındığını düşündüm. Bunu açıklayan başka bir yer bulmak zor. İnsanlar tam olarak haklı olduğu için bu cevabı geçersiz kılmalılar. NavLink'i kullanmalısın. AYRICA! Tam = {true} tam olarak doğrudur. Aksi halde, ev sahibinin her zaman aktif olmasına neden olan diğer bağlantıları tıklattığınızda, oluşturan ilk bağlantı yeniden oluşturulmaz. Keşke size 10 kez daha katılabilirdim. – wuno

+0

'NavLink' çalıştı, teşekkürler! –