2016-11-03 3 views
1

, похоже, есть некоторые разногласия между различными источниками о том, какой наиболее эффективный способ получить путь к текущему URL-адресу с использованием React Router (с использованием browserHistory). Ниже приведен фрагмент кода моего провайдера и маршрутов:Получение пути к текущему маршруту в React Router w/browserHistory

ReactDOM.render(
     <Provider store={Store}> 
      <Router history={browserHistory}> 
       <Route path="/tools/customer-lookup" component={CustomerLookupApp} /> 
       <Route path="/tools/customer-lookup/profile/:id" component={CustomerLookupProfileWrapper} /> 
       <Route path="/tools/customer-lookup/profile/:id/store/:storeid" component={CustomerLookupStoreProfileWrapper} /> 
       <Route path="/tools/customer-lookup/profile/:id/store/:storeid/transaction/:transid" component={CustomerLookupStoreItemsWrapper} /> 
      </Router> 
     </Provider>, 
     document.getElementById('customer-lookup-main')); 
}); 

Пробовал регистрации this.props.location.pathname в различных компонентах, но всегда приходит не определено. То же самое с this.context.

Любые советы приветствуются, спасибо.

+0

Ваши коды выглядят правильно, за исключением того, что ваши маршруты маршрутов немного избыточны. Вы можете использовать дочерние маршруты для уменьшения длины «пути». Вы можете публиковать полные коды для debugging.red –

+0

@JasonXu, за исключением того, что я пытаюсь ** избегать ** вложенности одного компонента в другой при путешествии на детский маршрут. Скорее, маршруты (хотя я согласен, что они выглядят ужасно избыточными) связывают совершенно другое представление о приложении с одной страницей и не обязательно повторно используют какой-либо из родительских компонентов. Если есть лучший способ выполнить **, что ** и все еще гнездятся маршруты, мне интересно услышать об этом. – Jose

ответ

0

Имущество this.props.location.pathname не будет доступно в «различных» компонентах, оно будет доступно только в ваших компонентах, передающих маршрут. то есть CustomerLookupApp, CustomerLookupProfileWrapper, CustomerLookupStoreProfileWrapper, CustomerLookupStoreItemsWrapper.

Если вам нужно указать путь дальше по дереву, вы можете передать его как реквизит.

+0

Могу ли я все же передать его так? '' Я получаю 'undefined' на' this'. – Jose