如何使用react-router打开单个产品的详细信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用react-router打开单个产品的详细信息相关的知识,希望对你有一定的参考价值。

我有一个Nav组件,它有两个链接。第一个链接指向主页面,第二个链接打开Hat组件。反过来,它向服务器发送请求并接收表示产品列表的对象数组,单击时,该产品的价格页面应该打开.my cod

const Nav = () => {
  return (
    <Router>
      <NavLink to={"/"}>{"Foo"}</NavLink>
      <NavLink to={"/male/hat"}>{"hat"}</NavLink>
      <Switch>
        <Route path={"/"} exact render={() => <div>'100'</div>} />
        <Route path={"/male/:hat"} exact render={() => <Hat />} />
      </Switch>
    </Router>
  );
};

const Hat = () => {
  const [arrProd, setArrProd] = useState([]);
  useEffect(() => {
    (async () => {
      await fetch(`https://foo0022.firebaseio.com//male/hat.json`)
        .then(res => res.json())
        .then(arr => setArrProd(Object.values(arr).flat()));
    })();
  }, []);
  console.log(arrProd);
  return (
    <Fragment>
      {arrProd.map(({ to, id, price, title }) => (
        <Fragment key={id}>
          <br />
          <NavLink to={`/male/hat/${to}`}>{title}</NavLink>
          <Route
            exact
            path={`/male/hat/${to}`}
            render={() => <div>{price}</div>}
          />
        </Fragment>
      ))}
    </Fragment>
  );
};
答案

这是因为您在/ male / hat路径上使用“exact”并单击Hat组件中的产品会将路径更改为/ male / hat之外的其他内容,因此不再显示Hat。你必须展示帽子,因为帽子是显示产品价格的东西。如果删除完全,单击产品将显示产品的价格。示例:https://codesandbox.io/s/y247880319?fontsize=14

以上是关于如何使用react-router打开单个产品的详细信息的主要内容,如果未能解决你的问题,请参考以下文章

在 Woocommerce 的单个产品页面中添加产品备注字段

如何在使用react-router路由的组件中集成错误边界

如何使用 react-routing 按 ID 返回页面?

react-router详细解释

react-router 未渲染的嵌套详细信息路由

使用react,react-router和redux进行分页