我在我的应用程序中使用react路由器v4。我正在开发一个仪表板,它有一个顶部导航,侧导航和主体布局。侧边导航有一个链接列表,当点击它的时候,它会转到它们的组件,并在另一个被称为主体的组件中呈现它们的组件。我已经将仪表板组件分解为顶部、侧面和主要部分。在索引中,我创建了一个路由列表,并将这些路由作为道具发送到主体,以便我可以呈现路由组件。
这样,我得到的误差为
已超出最大调用堆栈大小
为什么会这样?我如何防止这样的问题?我会在侧边栏上链接10多个。
这是我所做的
索引.js
const routes = [
{
path: '/',
exact: true,
main: () => <Dashboard />
},
{
path: '/dashboard',
main: () => <h2>dashboard</h2>
},
{
path: '/email_template',
main: () => <AdminEditor />
}
];
class Dashboard extends React.PureComponent {
render() {
return (
<div>
<nav
className="navbar navbar-default navbar-static-top"
role="navigation"
style={{ marginBottom: 0 }}>
<TopNavigation user={this.props.user} />
<SideNavigation />
</nav>
<BodyWrapper routes={routes} />
</div>
);
}
}
SideNavigation.js
<ul className="nav" id="side-menu">
<li>
<Link to="/">
<i className="fa fa-dashboard fa-fw" /> Dashboard
</Link>
</li>
<li>
<Link to="/email_template">
<i className="fa fa-dashboard fa-fw" /> Email Template
</Link>
</li>
</ul>
BodyWrapper.js
<div className="col-lg-12">
<h1 className="page-header">
{routes.map((route, index) => (
<Route
key={index}
path={route.path}
exact={route.exact}
component={route.main}
/>
))}
</h1>
</div>
任何人都可以指导我处理此类路线的有效方法吗?
更新
索引.js
ReactDOM.render(
<Provider store={store}>
<Router>
<App />
</Router>
</Provider>,
document.getElementById('root')
);
app.js
class App extends React.Component {
render() {
if (this.props.auth.isAuthenticated) {
return <Entity user={this.props.auth.user} />;
} else {
return (
<div>
<Links />
<Switch>
<Route path="/login" component={LoginPage} />
<Route path="/register" component={RegisterPage} />
<Route path="/home" component={HomePage} />
<Route
strict
path="/about"
render={() => <div>About us Page</div>}
/>
</Switch>
</div>
);
}
}
}
const userTypes = [
{ id: '4', val: Dashboard }, // Previous Above code is for this entity
{ id: '3', val: Dashboard3 },
{ id: '2', val: Dashboard2 },
{ id: '1', val: Dashboard1 }
];
const entity = props => {
const redirectRoute = userTypes.filter(x => x.id === props.user.id);
if (redirectRoute && redirectRoute.length) {
const ComponentToRender = redirectRoute[0].val;
return <ComponentToRender {...props} />;
} else {
return <div>can't get route. unknown issue.</div>;
}
};
首先,您的所有路由都应归入路由器组件,例如,
<Router>
<Route exact path="/" component={Home}/>
<Route path="/about" component={About}/>
<Route path="/topics" component={Topics}/>
</Router>
其次,将routes对象传递给其他组件是没有意义的,当您可以将所有表示组件都放在router组件中时,您只需尝试以下代码:
class Dashboard extends React.PureComponent {
render() {
return (
<Router>
<div>
<nav
className="navbar navbar-default navbar-static-top"
role="navigation"
style={{ marginBottom: 0 }}>
<TopNavigation user={this.props.user} />
<SideNavigation />
</nav>
<Route exact path="/" component={Dashboard}/>
<Route path="/dashboard" component={<h2>dashboard</h2>}/>
<Route path="/email_template" component={<AdminEditor />}/>
</div>
</Router>
);
}
}
有关react-router 4教程和工作的更多信息,请查看此链接:react培训
问题内容: 我正在做反应,基本上我想用工具提示制作一个按钮,现在我正在制作工具提示。我正在更改css display属性,以使其在鼠标进入和离开时不可见。但是有一个错误,我不知道该怎么办… 这是我的代码: 在控制台中,我收到此错误: 我找不到问题所在。我知道这可能与调用一个函数有关,后者又调用另一个函数。但是我在代码中看不到这样的东西,而且不确定是否全部。感谢帮助 :) 问题答案: 每当您看到从函
React.js用props给后代组件发值错了? 我编写了前面的演示来测试使用向后代组件发送信息。但它导致了错误: 未捕获的范围错误:对象超过了最大调用堆栈大小。克隆元素 但是我在演示运行良好后才写,所以你能告诉我是什么原因导致错误吗?
我在chrome上收到错误“未捕获的范围错误:超出最大调用堆栈大小”。这是我的j查询函数 从这行
我在使用jQuery ajax时遇到了一个问题。我有javascript 这段代码产生错误“UncaughtRangeError:Maximum call stack size exceeded”,我不明白为什么。我没有触发器,我使用了preventDefault和stopPropagation,但我仍然有这个错误。有人能帮我吗?
问题内容: 我想这意味着有一个循环引用,但是对于我的一生,我无法猜测如何解决它。 有人有主意吗? http://plnkr.co/edit/aNcBcU?p=预览 检查Chrome中的调试控制台(例如),您将看到错误。冒犯的行是 通过以下方式在控制器上对scope.map进行“ $ watched” 问题答案: 这是因为您要比较对象是否相等,而不是参考。将您的声明更改为此:
我试图找出我的 React 路由器代码片段出了什么问题。 我使用React路由器进行路由。我使用nginx作为我的服务器。 我收到错误“Maximum call stack size exceeded”(超出最大调用堆栈大小)(我认为这意味着它正在循环) 这是我的nginx文件: 我在许多路线的其他项目中使用了相同的技术,我没有遇到任何问题。但是在这里,我正在尝试制作一个简单的网站,我收到了这个错