首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >产品类别的useParams

产品类别的useParams
EN

Stack Overflow用户
提问于 2021-02-12 14:43:23
回答 1查看 131关注 0票数 0

我是React JS的新手,我正在尝试根据产品类别来调用产品列表。这应该在导航栏中完成,但我无法对其进行排序。我不知道是否可以在useParams中使用多个参数,也不知道如何使用它。如果有人能帮我解决这个问题,我将非常感激。下面是代码。

这是我调用每个ItemDetail的ItemDetailContainer:

代码语言:javascript
复制
import { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import Aimara from "../../Aimara";
import ItemDetail from "../../Components/ItemDetail/ItemDetail";

const showProduct = (varietalId) => {
  return new Promise((result) =>
    result(Aimara.find((product) => product.title === varietalId))
  );
};
const ItemDetailContainer = () => {      
    const [varietals, setVarietals] = useState([]);
    const { varietalId } = useParams([]);
    console.log(varietalId);
    useEffect(() => {
      showProduct(varietalId).then((product) => {
        setVarietals(product);
      });
    }, [varietalId]);
  
    return <ItemDetail key={varietals.id} varietals={varietals} />;           
};  

export default ItemDetailContainer;

这是导航栏:

代码语言:javascript
复制
import React from "react";
import { Navbar as NavbarBootstrap, Nav } from "react-bootstrap";
import { Link, NavLink } from "react-router-dom";
import CartWidgetComponet from "../CartWidget/CartWidget";
import LogoComponent from "../Logo/LogoComponent";


const NavBar = () => (
  <>
    <NavbarBootstrap bg="light" variant="light">        
        <Link to="/">
            <NavbarBootstrap.Brand className="mx-4"><LogoComponent/> Global Bridge</NavbarBootstrap.Brand>
        </Link>
        <Nav className="ml-auto">
            <Link to="/">
                <Nav className="mx-3">Global Bridge</Nav>
            </Link>
            <Link to="/AimaraRedWines">
                <Nav className="mx-3">Aimara Red Wines</Nav>
            </Link>
            <Link to="/AimaraWhiteWines">
                <Nav className="mx-3">Aimara White Wines</Nav>
            </Link>
            <Link to="/Contact">
                <Nav className="mx-3">Contact</Nav>
            </Link>
        </Nav>
        <NavLink to="/Cart"><CartWidgetComponet /></NavLink>
    </NavbarBootstrap>
  </>
);

export default NavBar;

这是ItemDetail,项目的详细信息:

代码语言:javascript
复制
import { Container } from "react-bootstrap";
import Item from "../Item/Item";
import ItemCountComponent from "../ItemCount";

const ItemDetail = ({ varietals }) => {
    return (    
        <>
            <br />
            <Container className="py-5 px-5">
                    <Item varietals={varietals} />
                    <div className="ml-4 mr-3">
                        <div className="font-italic text-center">{varietals.description}</div>
                        <ItemCountComponent className="d-flex justify-content-center" stock={5} initial={1} />                                 
                    </div>
            </Container>
        </>
    )
};


export default ItemDetail;

这就是那个项目

代码语言:javascript
复制
import { Card, Container } from "react-bootstrap";
import "./Style.scss";

const Item = ({ varietals }) => {
    return (
    <>
        <Container>
            <Card>
                <Card.Img variant="top" src={varietals.pictureUrl} />
                <Card.Body>
                    <Card.Title>{varietals.title}</Card.Title>
                    <Card.Text>
                      ${varietals.price}
                    </Card.Text>
                </Card.Body>
                </Card>        
        </Container>
    </>
    )
};


export default Item;
EN

回答 1

Stack Overflow用户

发布于 2021-02-12 15:00:21

使用一个路由参数为您的问题提供

看起来你一定是定义了一个路由,就像这样。

代码语言:javascript
复制
<Route path="/:varietalId" component={SomeComponent} />

现在,当您使用useParams获取varietalId时,您可以执行以下操作

代码语言:javascript
复制
  let { varietalId } = useParams();

多路由参数的

假设我们有多个参数要提取,如下所示

代码语言:javascript
复制
<Route path=":varietalName/:varietalId" component={SomeComponent} />

现在我们只需要做像这样的事情

代码语言:javascript
复制
  let { varietalName, varietalId } = useParams();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66167402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档