javascript 历史记录.push替换url中路径的最后一部分

ttp71kqs  于 2023-01-04  发布在  Java
关注(0)|答案(2)|浏览(178)

我正在使用react router v5,作为我的历史记录之一。push调用它正在替换最后一个路径部分。
因此,不要使用“/home/menu/allergens/newValue”
它导航到“/home/menu/newValue”
不管有多少条路,它总是取代最后一条?
我使用的是历史。push('modal/selectroute');
为什么会这样?
示例代码:

import { useHistory } from "react-router-dom";
export const Thing = () => {
  const history = useHistory();
  return (
    <div>
      <button onClick={() => history.push("modal/selectroute")}>
        navigate
      </button>
    </div>
  );
};

jjjwad0x

jjjwad0x1#

它应该导航到"/thing/modal/selectroute"作为提供给history的路径. push是相对的对吗?
不,react-router-dom@5路由和链路不会像RRDv6中那样自动使用相对路径。在v5中,您需要手动构建相对路径。
示例:

import { useHistory, useRouteMatch } from "react-router-dom";

export const Thing = () => {
  const history = useHistory();
  const { url } = useRouteMatch(); // <-- get the current url
  return (
    <div>
      <button
        // prepend it to new target path
        onClick={() => history.push(`${url}/modal/selectroute`)}
      >
        navigate
      </button>
    </div>
  );
};

详情请参见RRDv5 Nesting demo

vxf3dgd4

vxf3dgd42#

在我的例子中,我错过了路线前面的(/)。你应该试着做一次。例如:history.push(“/modal/selectroute”)。它在我的情况下有效,在这个情况下也可能有效。

相关问题