Разве мы не можем выполнить итерацию material-ui внутри массива в React.js ?

#javascript #reactjs #material-ui #arrayiterator

#javascript #reactjs #material-ui #arrayiterator

Вопрос:

Я пытался использовать material-ui и перебирать его внутри массива (для создания рейтингов для некоторых элементов, например, на сайтах электронной коммерции). Код не работает. На моем локальном сервере он вообще не показывает никаких звездочек. Прежде чем я сделал его динамическим, он работал нормально, затем я добавил реквизиты в свой функциональный компонент, чтобы сделать его динамичным. Все остальное работает просто отлично, за исключением того, что он не принимает мой значок material-ui внутри массива, чтобы я мог выполнить итерацию. Более того, в инструкции import говорится: «его значение никогда не считывается, хотя оно импортировано»

Мой код: Product.js:

 import React from "react";
import "./Product.css";
import StarRateIcon from "@material-ui/icons/StarRate";

function Product({ id, title, image, price, rating }) {
  return (
    <div className="product">
      <div className="product_info">
        <p>{title}</p>
        <p className="product_price">
          <small>$</small>
          <strong>{price}</strong>
        </p>
        <div className="product_rating">
          {Array(rating)
            .fill()
            .map((_, i) => (
              <p StarRateIcon className="star" />
            ))}
        </div>
      </div>
      <img src={image} alt="" />
      <button>Add to Basket</button>
    </div>
  );
}

export default Product;
  

Мой home.js файл :

 import React from "react";
import "./Home.css";
import Product from "./Product";

function Home() {
  return (
    <div classname="home">
      <div className="home_container">
        <img
          className="home_image"
          src="https://m.media-amazon.com/images/G/01/digital/video/sonata/US3P_JOKER_IMAGE_ID/be07783e-2738-4aaf-b90c-d0ec474d15ae._UR3000,600_SX1500_FMwebp_.jpg"
        />
        <div className="home_row">
          <Product
            id="890778"
            title="Description"
            price={99.99}
            image="https://m.media-amazon.com/images/I/71BGLa7IFtL._AC_UY218_.jpg"
            rating={5}
          />
          <Product />
        </div>
      </div>
    </div>
  );
}

export default Home;
  

Помогите кто-нибудь! Я могу использовать фрагменты emoji, но я действительно хочу, чтобы это работало. Я импортировал StarRateIcon и использовал его. Это не работает.

Ответ №1:

Похоже, вы случайно поставили «p» перед именем вашего компонента icon. У вас есть <p StarRateIcon className="star" /> , когда это должно быть <StarRateIcon className="star" />

Ответ №2:

Вы отображаете p тег без содержимого с недопустимым атрибутом, StarRateIcon . Это причина, по которой вы ничего не видите. Если вы проверите HTML, вы, скорее всего, увидите p теги. Вы также можете увидеть ошибки в консоли о недопустимых атрибутах. Ваш код должен выглядеть примерно так:

 Array(rating).fill().map(() => <StarRateIcon className="star" />)