3

Как вы получаете текущее местоположение при использовании «response-router-redux»?Получить текущее местоположение от реакции-router-redux

Это routing состояния:

{ 
    routing: { 
     locationBeforeTransition: { 
      pathname: "/foo", 
      search: "", 
      hash: "", 
      state: null, 
      action: "PUSH", 
      key: "e8jfk" 
     }, 
     query: null, 
     $searchBase: { 
      search: "", 
      searchBase: "" 
     } 
    } 
} 

Я могу четко получить доступ к текущему местоположению в качестве state.routing.locationBeforeTransition.pathname, но название «locationBeforeTransition» кажется, что это было бы предыдущее расположение страницы, а не текущая. Также кажется странным, что это единственное свойство в моем состоянии маршрутизации. Я подозреваю, что делаю что-то неправильно.

Вот упрощенная восстановитель, который имеет только маршрутизацию:

reducer.js

import { combineReducers, createStore, applyMiddleware, compose } from 'redux'; 
import { routerReducer, routerMiddleware } from 'react-router-redux'; 
import { browserHistory } from 'react-router'; 
import thunkMiddleware from 'redux-thunk'; 

const reducer = combineReducers({ 
    routing: routerReducer, 
}); 

export const store = createStore(reducer, {}, compose(
    applyMiddleware(
     routerMiddleware(browserHistory), 
     thunkMiddleware 
    ), 
    window.devToolsExtension ? window.devToolsExtension() : f => f 
) 
); 

ответ

3

Вы не можете реально получить, что от Redux магазина, потому что по реакции-router- redux docs in How do I access router state in a container component?:

Вы не должны считывать состояние местоположения непосредственно из магазина Redux. Это связано с тем, что React Router работает асинхронно (для обработки вещей , таких как динамически загруженные компоненты), а ваше дерево компонентов может не , но обновляться синхронно с вашим состоянием Redux. Вы должны полагаться на реквизиты , переданные React Router, поскольку они обновляются только после того, как обработал весь асинхронный код.

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

  • Нет связанных вопросов^_^