【发布时间】:2019-10-08 03:16:35
【问题描述】:
好的,请耐心等待。我真的很陌生,所以如果以前有人问过这个问题,而我只是没有找对地方,我很抱歉。
我有一个我正在构建的 react 应用程序,我已经使用在线教程从头开始设置,该教程介绍了在页面顶部创建导航栏(这很好),因为它在应用程序中列出.js 文件在我的路由器切换之前。
我要做的是在左侧窗格中为“/settings”页面创建一个导航,例如,只有在路径为 /settings/* 时才能看到该页面
您会在顶部看到导航栏,然后单击我的个人资料菜单中的设置,然后在左侧看到一个导航列表,其中显示了类似的内容 “我的帐户”/settings/myaccount “我的个人资料”/settings/myprofile “服务条款”/settings/tos 等等... 当您单击每个页面时,它将打开一个新组件 /settings/myaccount /设置/我的个人资料 /设置/tos 等等……
我还想确保我的导航在左侧更新并突出显示正确的“项目”。我听说过有关“解除”状态的事情,但不确定这是否是我需要做的,或者如何正确处理。
我的想法是为 /settings 创建某种类型的组件,然后在其中为 myaccount、myprofile、tos 等设置另一个路由开关……然后在此 /settings 组件页面的顶部显示我的导航。这是一个可行的选择吗?只是在那个特定的组件中有一些东西保持“isSelected”状态并设置一个类来突出显示有问题的导航项?
Routes.js 文件的当前代码
export default ({ childProps }) =>
<Switch>
<AppliedRoute path="/" exact component={Home} props={childProps} />
<AppliedRoute path="/login" exact component={Login} props={childProps} />
<AppliedRoute path="/signup" exact component={Signup} props={childProps} />
<AppliedRoute path="/settings" exact component={Settings} props={childProps} />
{ /* Finally, catch all unmatched routes */ }
<Route component={NotFound} />
</Switch>;
我想要导航并路由到其他页面的设置文件的代码
<Container>
<Row>
<Col lg="lg-2">
<Nav vertical pills>
<NavItem>
<NavLink href="/settings/gear">My Gear</NavLink>
</NavItem>
<NavItem>
<NavLink href="/settings/profile">My Gear</NavLink>
</NavItem>
</Nav>
</Col>
<Col xs = "lg-10">
<div className="Settings">
Settings Page!
<LoaderButton
style={{backgroundColor: "#fc4c02"}}
size="lg"
//disabled={!this.validateForm()}
type="submit"
//isLoading={this.state.isLoading}
text="Connect Strava"
loadingText="Logging in..."
icon={<FontAwesomeIcon icon={faStrava}/>}
onClick={this.handleSubmit}
>
</LoaderButton>
</div>
</Col>
</Row>
</Container>
我还没有在设置中设置状态部分或路线设置。因为我不想在每一页都重新做导航列表
【问题讨论】:
-
如果您正在寻找到组件映射的路由,您应该阅读
react-router或其他类似的路由库。 Facebook recommends these -
只是为了确保我得到以前的“答案”,这是我的想法。有一个名为 SettingsNav 的父组件,它维护正在查看的页面的状态,并且该组件将使用带有句柄的该信息更新 dom(我可以很容易地做到这一点)然后,在每个设置页面上,只需执行类似的操作,这是sudo 代码:返回 {
}我的页面设置子页面信息.... -
或者可能设置 redux 或其他东西来更轻松地管理状态:)
标签: reactjs react-router