React Router - 基于最后一页的useNavigation
React Router - useNavigation based upon last Page
我正在尝试在 React 应用程序中做一些非常简单的事情。我想要一个“后退”按钮将用户带到上一页,除非用户是从特定页面到达的,在这种情况下,“后退”会将他们路由到不同的页面 - 例如:
const navigate = useNavigate();
if (lastPage === XYZ) {
navigate('/home');
} else {
navigate(-1);
}
我的问题是我不知道如何获取 react-router-dom v6 中的 lastPage(其中 useHistory 已被删除)。
谢谢!
从“特定”页面,您应该发送一些“状态”以指示它是从哪里导航的。
示例:
使用Link
组件
<Link to="/newPage" state={{ fromSpecificPage: true }} />
使用 Navigate
组件
<Navigate to="/newPage" state={{ fromSpecificPage: true }} />
使用navigate
函数
const navigate = useNavigate();
navigate("/newPage", { state: { fromSpecificPage: true } });
然后在您要有条件地处理后退导航的页面上检查可能已通过的特定路由状态。
import { useLocation, useNavigate } from 'react-router-dom';
...
const { state } = useLocation();
const navigate = useNavigate();
...
const { fromSpecificPage } = state || {};
if (fromSpecificPage) {
navigate('/home', { replace: true });
} else {
navigate(-1);
}
我正在尝试在 React 应用程序中做一些非常简单的事情。我想要一个“后退”按钮将用户带到上一页,除非用户是从特定页面到达的,在这种情况下,“后退”会将他们路由到不同的页面 - 例如:
const navigate = useNavigate();
if (lastPage === XYZ) {
navigate('/home');
} else {
navigate(-1);
}
我的问题是我不知道如何获取 react-router-dom v6 中的 lastPage(其中 useHistory 已被删除)。 谢谢!
从“特定”页面,您应该发送一些“状态”以指示它是从哪里导航的。
示例:
使用
Link
组件<Link to="/newPage" state={{ fromSpecificPage: true }} />
使用
Navigate
组件<Navigate to="/newPage" state={{ fromSpecificPage: true }} />
使用
navigate
函数const navigate = useNavigate(); navigate("/newPage", { state: { fromSpecificPage: true } });
然后在您要有条件地处理后退导航的页面上检查可能已通过的特定路由状态。
import { useLocation, useNavigate } from 'react-router-dom';
...
const { state } = useLocation();
const navigate = useNavigate();
...
const { fromSpecificPage } = state || {};
if (fromSpecificPage) {
navigate('/home', { replace: true });
} else {
navigate(-1);
}