使用redux路由器,在我的组件中,我可以访问params
对象,其中包含有关URL的信息。
然而,在我的动作器中,我通过getState()
得到状态,因此没有注入params道具。
有解决方法吗?
答案 0 :(得分:1)
要在动作创建者中获取访问权限,您应该通过它:
组件中的
this.props.someAction(this.props.params)
在行动创作者
const someAction = (params)=>{
let {data} = params;
....
}
要在选择器中获取访问权限,您应该传递它:
组件中的
const mapStateToProps=(state, ownProps)=({
data:someSelector(state,ownProps.params)
})
在选择器
中const someSelector=(state, params)={
..some computing
return result
}
从getState()访问路由器的参数,路径名和查询:
您需要安装redux-router
如果您已经使用过它,请检查
1.routes
import { ReduxRouter } from 'redux-router';
<Provider store={store}>
<ReduxRouter>
<Route path="/" component={App}>
//...routes
</Route>
</ReduxRouter>
</Provider>
2.reducer
import { routerStateReducer } from 'redux-router';
const reducer = combineReducers({
router: routerStateReducer,
...
});
3.store enchancer
import { reduxReactRouter} from 'redux-router';
import { createHistory } from 'history';
import { compose, createStore, applyMiddleware } from 'redux';
const store = compose(
applyMiddleware(m1, m2, ...),
reduxReactRouter({
createHistory
})
)(createStore)(reducer);