reactjs - 私有路由的嵌套路由反应路由器dom
问题描述
const App = () => {
const isLoggedIn = useRecoilValue(isLoggedInState)
const setCustomers = useSetRecoilState(customersState);
const setSchedules = useSetRecoilState(scheduleState);
useEffect(() => {
if(isLoggedIn) {
setCustomers(customers);
setSchedules(schedules);
}
},[isLoggedIn, setCustomers, setSchedules])
return <div className="App">
<Switch>
<PublicRoute exact={true} path="/login" component={Login} />
<PrivateRoute exact={true} path="/" component={MainApp} />
</Switch>
</div>;
}
const Private = ({component: Component, ...rest}) => {
const isLoggedIn = useRecoilValue(isLoggedInState);
return <Route {...rest}
render={props => {
return isLoggedIn
? <Component {...props} />
: <Redirect to={{pathname: "/login", state: {from: props.location}}}/>
}}/>
};
const MainApp = () => {
let { path, url } = useRouteMatch();
return <>
<header>
<Link exact to={path} activeClassName="active-tab">Schedule Today</Link>
<Link exact to={`${path}customer`} activeClassName="active-tab">Customers</Link>
</header>
<Switch>
<PrivateRoute exact path={url} component={Schedules}/>
<PrivateRoute exact={true} path={`${url}customer`} component={Customers}/>
<PrivateRoute exact={true} path={`${url}customer/:id`} component={CustomerInfo}/>
</Switch>
</>;
};
在 react router dom 文档中,嵌套需要在同一路径下。我尝试构建具有私有和公共路由的 Web 应用程序。在私有路由下要创建嵌套路由。登录后转到我想要的组件,但是当单击客户选项卡时无法识别为什么?此外,标题被删除。
解决方案
推荐阅读
- asp.net-core-mvc - 区域未传递给 ASP.net Core 中的 Url.Action()
- ldap - Ansible debops.slapd 和 ansible gitlab_user
- php - 对申请休假进行日期验证,并且必须小于 15 天。问题是相应的代码错误离开也被拒绝
- python - 为什么在python中的“try:”块中的return语句之后执行“finally:”块?
- parse-server - 具有“管理员”角色的用户无法获取公共记录
- angular - 从地理编码器获取地址,如自动完成谷歌地图
- android - 处理 JSON 响应 - 基于响应的相同属性的 JsonArray 和 JsonObject - Java - Android Retrofit
- php - 在 PHP 中基于专家级字符串创建数组
- javascript - jQuery循环遍历对象
- java - 使用 Java Microsoft graph SDK 在 Outlook 中添加成员