我知道我可以使用useNavigate()
钩子中的navigate(-1)
来导航到上一页,但使用navigate(-1,{state:state})
似乎行不通,因为当我转到上一页时,我会得到一个空值.
我知道我可以使用useNavigate()
钩子中的navigate(-1)
来导航到上一页,但使用navigate(-1,{state:state})
似乎行不通,因为当我转到上一页时,我会得到一个空值.
navigate
函数有两个函数签名,一个接受to
和options
个参数,另一个接受单个delta
个参数.在执行增量导航时,不传递任何状态,您只是在历史堆栈中向前或向后"移动".
declare function useNavigate(): NavigateFunction; interface NavigateFunction { ( to: To, options?: { replace?: boolean; state?: any; relative?: RelativeRoutingType; } ): void; (delta: number): void; }
从"上一个"页面,您可以向前导航并传递"Referrer"值,该值是"当前"页面判断的状态.如果存在state.referrer
,则使用它发出导航操作并传递任何状态,否则将增量导航发回用户所在的任何先前页面.
上一页:
<Link to="/next-page" state={{ referrer: "/this-page" }}>
Next page
</Link>
navigate("/next-page", { state: { referrer: "/this-page" } });
下一页:
const { state } = useLocation();
...
if (state.referrer) {
navigate(state.referrer, { state: { /* state you want to pass back */ } });
} else {
navigate(-1);
}