использование метода .find() для поиска ProductID в качестве базы параметров по щелчку ProductID

#javascript #reactjs #url #parameters

Вопрос:

Прямо сейчас я получаю товар по адресу match.params.id но когда я использовал метод поиска для сравнения item.id и match.params.id это возвращает товар, который не найден…. ниже приведен код

 const DetailsPage = (props) => {
    console.log(props.match.params.id)
    const product = data.products.find((item) => item.id === props.match.params.id)
    console.log(product);
    if (!product) {
        return (
            <h1>Product Not Found</h1>
        )
    }
    return (
        <div>
            DetailsPage
                {product.name}
        </div>
    )
 

Как вы можете видеть, я console.log(props.match.params.id), который дал мне идентификатор параметра продукта, но в моем объявлении функции ничего не существует

Ответ №1:

Это связано с тем, что идентификатор, полученный из маршрута, будет иметь тип string . Поскольку вы выполняете === строгие равенства, найти не удастся .

Вы можете ввести свой params.id чтобы Number .

 const product = data.products.find((item) => item.id === Number(props.match.params.id))
 

Также react-router теперь предоставляется useParams крюк для извлечения параметров .

 let { id } = useParams();