我需要得到当前路径的url在路由更改和基于值我想做条件渲染
这是我的代码,我没有继续的想法。
import React, { useRef, useEffect, useState } from "react";
import "./App.css";
import "./css/custom.css";
import {
BrowserRouter as Router,
Switch,
Route,
useLocation,
} from "react-router-dom";
import NavigationBar from "./pages/homepage-components/1-navbar";
import HomePage from "./pages/HomePage";
import Post from "./pages/Post";
function NavigationHeader() {
const location = useLocation();
return location.pathname;
}
function App() {
const [location, setLocation] = useState("");
const mounted = useRef();
useEffect(() => {
if (!mounted.current) {
// do componentDidMount logic
let val = NavigationHeader; // this part return the function, even tried NavigationHeader(), but no luck
alert(val);
mounted.current = true;
} else {
// do componentDidUpdate logic
}
});
return (
<Router>
{/* --------------- Navigation Bar --------------- */}
{location === "/" ? <NavigationBar /> : null}
{/* --------------- End of Navigation Bar --------------- */}
<Switch>
<Route exact path="/" component={() => <HomePage isroot={location} />} />
<Route path="/post" component={Post} />
</Switch>
</Router>
);
}
export default App;
所以我需要做的是:
对于每个路线
更改,我需要更新位置
的值,并进行条件渲染,并将该值(路径)作为道具也传递到
主页
组件
有什么想法吗?
您正在重新定义位置:
const [location, setLocation] = useState("");
// ---^^^^^
把它换成别的东西。
您不需要仅为useLocation定义其他函数。您可以像这样使用它:
function App() {
const location = useLocation()
// ...
useEffect(() => {
console.log(location.pathname)
}, [location])
编辑:
如果即使在这之后,你得到了错误,那么可能你的反应路由器版本不是最新的,或者不是定义了usePlace
的版本。尝试以下内容:
>
从package.json
删除节点_模块以提高缓存清晰度:
rm-rf节点\u模块/
npm安装react路由器react路由器dom
npm启动
编辑2:
检查这个问题告诉我们,我们不能在将BrowserRouter放入树的同一组件中使用任何挂钩。
将BrowserRouter移出该组件。它可以放在ReactDOM.render()中
因此,您需要在渲染ie的位置定义BrowserRouter。index.js
。
查看此帖子了解更多详细信息。
问题内容: 在实现持久性底部栏时,单击底部栏中的按钮时,需要恢复以前的路线。 单击底部栏中的按钮时,将保存其当前路径路径(/ a / b / c ),并根据该按钮单击恢复先前保存的路径。 从概念上讲,用户会将每个按钮视为一个工作区,并且其状态永远不会丢失(包括后退堆栈)。用户可以安全地从一个工作区切换到另一个工作区。 当路由重绕到根时,如何在Flutter中获取当前路由路径? 问题答案: 不会公开
在实现持久底部栏时,当单击底部栏中的按钮时,需要恢复以前的路由。 单击底部栏中的按钮时,会保存其当前路线路径(/a/b/c ),并根据按钮的单击恢复先前保存的路线。 从概念上讲,用户会认为每个按钮都是一个工作区,其状态永远不会丢失(包括后退堆栈)。用户可以安全地从一个工作区切换到另一个工作区。 当路由重绕到根时,如何在Flutter中获取当前路由路径?
当前文档只讨论获取路由参数,而不是实际的路由段。 例如,如果我想找到当前路由的父级,怎么可能?
问题内容: 如何在Symfony 2中获得当前路线? 例如: 我如何获得该价值? 问题答案: 从ContainerAware(例如控制器)中:
问题内容: 我在代码中的某个地方遇到了异常,但是可以在应用程序启动时安全地导入相同的模块。我很好奇,看看Python寻找要导入模块的路径,以便我能够追踪为什么会出现此问题。我找到了这个: 这是系统在尝试导入模块时查找的所有路径的列表吗? 问题答案: python默认检查的路径位置可以通过check检查。
我有一个路由器像下面: 以下是我想要实现的目标: 如果未登录,将用户重定向到 如果用户在登录后试图访问,请将其重定向到root 因此,现在我尝试在