在React中,使用mapStateToProps
函数可以将Redux store中的状态映射到组件的props上。然而,mapStateToProps
函数本身并不能直接访问React路由器的匹配对象。要从mapStateToProps
中访问路由器匹配对象,可以使用react-router-redux
库提供的routerReducer
和routerMiddleware
。
以下是一种实现方法:
react-router-redux
库。routerReducer
并将其合并到根级reducer中。import { combineReducers } from 'redux';
import { routerReducer } from 'react-router-redux';
const rootReducer = combineReducers({
// 其他的reducer
router: routerReducer
});
export default rootReducer;
routerMiddleware
来监听路由变化并将其同步到Redux store中。import { createStore, applyMiddleware } from 'redux';
import { routerMiddleware } from 'react-router-redux';
import { createBrowserHistory } from 'history';
import rootReducer from './reducers';
const history = createBrowserHistory();
const middleware = routerMiddleware(history);
const store = createStore(
rootReducer,
applyMiddleware(middleware)
);
export default store;
mapStateToProps
函数中访问路由器匹配对象了。通过state.router
可以获取到路由器的相关信息,例如当前路径、路由参数等。const mapStateToProps = state => {
const { location, match, history } = state.router;
// 使用location、match、history进行相关操作
// ...
return {
// 将相关数据映射到组件的props上
};
};
需要注意的是,以上方法是使用react-router-redux
库来实现的。如果你正在使用其他的路由库,可能需要按照相应的方法进行操作。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云