无法从父元素接收道具

问题描述 投票:0回答:1

有一个父组件 Products 和另一个组件 SingleProduct

我试图将产品作为道具传递给 SingleProduct,但当我 console.log 时却未定义

谁能告诉我我做错了什么?

还尝试使用 UseState 传递道具,但仍然未定义。

谢谢

import data from "../data"

const Products = () => {
    const products = data;

    return (
        <div className='pt-12 grid gap-4 md:grid-cols-2 lg:grid-cols-3 '>
            {products.map((prod) => {
                return (
                    <Link to={`/product/${prod.id}`}>
                        <SingleProduct product={prod}></SingleProduct>
                    </Link>
                )
            })}
            <Link to='/home'></Link>
        </div>


    )
}

export default Products
const SingleProduct = ({ product }) => {
    console.log(product)

    return (
        <div>
            <figure className='px-4 pt-4'>
                <img
                    src={prod.image}
                    alt='Elf'
                    className='rounded-xl h-64 md:h-48 w-full object-cover'
                />
            </figure>
        </div>
    )
}

export default SingleProduct

应用程序.jsx

const router = createBrowserRouter([
  {
    path: '/',
    element: <Products></Products>,
  },
  {
    path: '/product/:id',
    element: <SingleProduct></SingleProduct>,
  },
])

function App() {

  return (
    <RouterProvider router={router}></RouterProvider>
  )
}

export default App
reactjs react-hooks react-router react-props
1个回答
0
投票

在 React 中将 props 传递给组件时,它们会通过组件参数中默认的

props
对象作为键:值对传递。要访问
product
的值,您应该这样做:

const SingleProduct = (props) => {
    console.log(props.product)
    ...
};

© www.soinside.com 2019 - 2024. All rights reserved.