@bmg01

Пропсы, массивы React JS не окажите услугу?

Здравствуйте
есть такой компонент
function Main() {
   const database = [
        {
            id: 1,
            name: "MacBook",
            price: 100000,
            bought: false,
            rating: 5,
        }]
  return (
        <div className="main">
            {database.map((product) => {
                return <Maincont product={product}/>
            })}
        </div>
    )
}
И есть еще такой компонент <Maincont/>
  function Maincont(props){
    return (
        <div className ="card">
            <div className="card-info">
                <div className="card-name">{?}</div>
                <div className="card-price">{?}</div>
            </div>
        </div>
}


теперь вопрос как вы уже поняли тут дела с пропсами я не знаю как сделать так чтоб из переменной datebase name и price отображались в конечном результате
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NewD16
Если я правильно понял вопрос, то у этой проблемы два решения. props, которые ты получаешь в компоненте Maincont - это объект, у которого должно быть поле product (если верить этой записи <Maincont product={product}/>). Значит, чтобы получить name и price объекта product - нужно просто обратиться к ним: props.product.name и props.product.price. Но есть более практичный способ - с помощью деструктуризации ты можешь передавать в props в виде {product}. Теперь ты можешь в компоненте обращаться непосредственно к своему объекту product - function Maincont({product}){...}. Но было бы еще логичнее в данной ситуации передавать не объект продукт, а его поля!
<Maincont name={product.name} price={product.price}/>

, а сам компонент будет выглядеть вот так: function Maincont({name, price}){...}

И последнее - чтобы еще круче это записать передавать пропсы можно также с помощью деструктуризации вот так:
<Maincont {...product} />. Правда при таком подходе ты передаешь все поля объекта, а в компоненте похоже используются только два, так что самый логичный вариант -
<Maincont name={product.name} price={product.price}/>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 18:35
30000 руб./за проект
25 нояб. 2024, в 18:33
10000 руб./за проект
25 нояб. 2024, в 18:29
36000 руб./за проект