Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Redux中的路由器路由参数_Javascript_Reactjs_Redux_React Router_React Router Redux - Fatal编程技术网

Javascript React Redux中的路由器路由参数

Javascript React Redux中的路由器路由参数,javascript,reactjs,redux,react-router,react-router-redux,Javascript,Reactjs,Redux,React Router,React Router Redux,使用redux和react router,我希望访问路由指定组件以外的组件上的路由参数 我已经对react-router、redux和react-router-redux进行了如下设置,我想从我的redux存储访问reportId参数 const history = syncHistoryWithStore(browserHistory, store); const store = createStore(reducers); const routes = ( <Router

使用redux和react router,我希望访问路由指定组件以外的组件上的路由参数

我已经对react-router、redux和react-router-redux进行了如下设置,我想从我的redux存储访问reportId参数

const history = syncHistoryWithStore(browserHistory, store);

const store = createStore(reducers);

const routes = (
    <Router history={history}>
        <Route path="/" component={MainLayout} >
            <IndexRoute component={Home} />
            <Route path="reports">
                <Route path=":reportId" component={ReportViewerContainer}  />
            </Route>
        </Route>
    </Router>
);

ReactDOM.render(
    <Provider store={store}>{router}</Provider>,
    document.getElementById('root')
);
const history=syncHistoryWithStore(浏览器历史记录,存储);
常量存储=创建存储(还原器);
常数路由=(
);
ReactDOM.render(
{路由器},
document.getElementById('root'))
);
我已经尝试连接react-redux路由器来存储路由状态,但是我发现除了活动路由的完整路径之外,redux内部没有任何有用的存储。这让我可以选择从redux中的路径解析出reportId,或者在redux中创建自己的自定义操作,并在ReportViewerContainer组件中使用componentWillReceiveProps生命周期方法更新它。一定有更好的方法吗?

因此我认为您可以使用获取将通过路由器传递的位置。(参考该链接了解其工作原理。)这将为您提供一个坚实的工作方向

这也可以帮助您在国际化的道路上工作


如果您想访问redux存储中的路由器,有一个名为
的HOC,它使用路由器
()。如果我没记错的话,这会将任何路由器状态作为道具传递给您的组件

您需要对组件进行的唯一更改是:

import { withRouter } from 'react-router'

export default withRouter(ReportViewerContainer);

如果要访问组件内部的路由器参数,最好的方法是使用with router

通过以上示例,您会发现更好的理解

import { withRouter } from 'react-router'

export default withRouter(ReportViewerContainer);