2016-02-01 2 views
0

Я пытаюсь не использовать: if (window.location), чтобы получить доступ к моему текущему маршруту.Получить имя текущего маршрута в компоненте

Я работаю над кодом, в котором маршрутизатор уже определен, и компонент уже написан. Я пытаюсь получить информацию о маршрутизаторе от компонента, потому что мне нужно применить имя класса в зависимости от маршрута.

Вот как маршрутизатор выглядит следующим образом:

export const createRoutes = (dispatch, getState) => ( <Route component={AppLayout} > <Route path="/" component={Home} onEnter={(nextState, replaceState) => { console.log('on Enter/= ', nextState); nextState.test = 'aaaa'; //can't seem to pass states here.... }} />

затем в моем компоненте:

render() { 
    //I want to access my super router or location . in fact 
    // I just want to know if currentURl === '/' 

    //and after reading the react-router doc 5 times - my head hurts 
    // but I still hope to get an answer here before putting a window.location 
} 
` 

ответ

2

В зависимости от версии React маршрутизатора вы используете вы имеете доступ к различным объектам доступных на компоненте context.

MyComponent.contextTypes = { 
    location: React.PropTypes.object 
} 

, который позволит вам сделать следующее

render() { 
    if (this.context.location.pathname === '/') { 
     return <h1>Index</h1>; 
    } else { 
     return <h2>Not index</h2>; 
    } 
} 
+0

Спасибо за это! – Ant

+0

Спасибо, наконец, фрагмент кода, который обновлен! – Sephy

+0

В принципе то же решение, представленное в нескольких строках кода, может быть полезно: http://stackoverflow.com/a/37523743 – Slawoj

Смежные вопросы