使用redux和反应路由器,我想访问路由指定的组件以外的组件上的路由参数。
我已经对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')
);
我已经尝试连接react-redux路由器来存储路由状态,但是我发现除了活动路由的完整路径之外,redux内部没有任何有用的存储。这让我可以选择从redux中的路径解析出reportId,或者在redux中创建自己的自定义操作,并在ReportViewerContainer组件中使用componentWillReceiveProps生命周期方法更新它。一定有更好的办法吗?
因此,我认为您可以使用上下文获取将通过路由器传递的位置。(请参考该链接了解其工作原理。)这应该给你一个坚实的工作方向。
这也可以帮助您在国际化的道路上工作。
class MyComponent extends React.Component {
static contextTypes = {
router: React.PropTypes.object
};
render(){
// By declaring context type here, and childContextTypes
// on the parent along with a function with how to get it,
// React will traverse up and look for the `router` context.
// It will then inject it into `this.context`, making it
// available here.
}
}
如果您想访问redux商店中的路由器,有一个名为的HOC,其中包含路由器
(docs)。如果我没记错的话,这会将任何路由器状态作为道具传递给您的组件。
您需要对组件进行的唯一更改是:
import { withRouter } from 'react-router'
export default withRouter(ReportViewerContainer);
如果要访问组件内部的router参数,最好使用withRouter
https://egghead.io/lessons/javascript-redux-using-withrouter-to-inject-the-params-into-connected-components
通过以上示例,您会发现更好的理解。
如果我将路由折叠起来,这样看起来就像: 工作很好。我嵌套的原因是因为我将在“dashboard”下有多个子项,并且希望它们都在URL中以为前缀。
我有一个简单的(目前)应用程序,使用react router和redux,我想为它添加国际化功能。 我已经安装了npm包,并且能够安装和运行提供的示例。我已经将适当的导入添加到我自己的应用程序中,并将国际化标签添加到根渲染方法中。 当我将I18nextProvider标记添加到render方法时,我得到了错误 找不到模块“react” 这并不是特别有用,尤其是因为如果我删除标签,react应用程序
我在最新的应用程序中使用react router和redux,我面临着一些与基于当前url参数和查询所需状态更改相关的问题。 基本上,我有一个组件,需要在每次url更改时更新它的状态。状态是通过redux的道具传递给decorator的,就像这样 目前,我正在使用componentWillReceiveProps生命周期方法来响应来自react-router的url更改,因为当this.props
我在想这样的事情: 前台有一个不同的布局和风格与管理区域。所以在frontpage中的路由是home、about等等,其中一个应该是子路由。 /home应该呈现到Frontpage组件中,而/admin/home应该呈现在后端组件中。 最终解决方案: 这是我现在使用的最终解决方案。这个例子也像传统的404页面一样有一个全局错误组件。
我使用的反应路由器dom版本5.0.1一个简单的反应应用程序,我使用了汇总捆绑,这是我的路由器组件 问题是,它只在localhost:8000/处显示主路由,但当我尝试访问localhost:8000/hello或localhost:8000/登录时,会出现此错误 这是我的rollup.config };
react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击