使用" react-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:
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
)
);
答案 0 :(得分:4)
你实际上无法从redux商店获得,因为根据How do I access router state in a container component?中的react-router-redux文档:
您不应直接从Redux商店读取位置状态。 这是因为React Router异步操作(处理事情 例如动态加载的组件)和组件树可能不会 然后与您的Redux状态同步更新。你应该依靠 React路由器传递的道具,因为它们只有在它之后才会更新 处理了所有异步代码。