Как изменить src изображения, когда OnMouseEnter div в компоненте react без состояния

#javascript #reactjs #image #onmouseover #stateless

#javascript #reactjs #изображение #onmouseover #без состояния

Вопрос:

Я новичок в react. Я хочу изменить src моего изображения, когда мышь вводит div.

Вот мой код.

 const CategoryImage = styled.img.attrs(props => ({
  src: props.url,
}))`
  width: 80px;
  height: 80px;
  margin: 5px auto;
`;

let imgUrl = ``;

const Category = ({ categoryItems }) => {
  function handleHover(category) {
    const {
      category: { hoverUrl },
    } = category;
    // console.log(hoverUrl);
    imgUrl = hoverUrl;
  }
  function handleUnHover(category) {
    const {
      category: { url },
    } = category;
    // console.log(url);
    imgUrl = url;
  }

  return (
    <Container>
      <Grid>
        {categoryItems.map(category => (
          <CategoryContainer
            key={category.id}
            onMouseEnter={() => handleHover({ category })}
            onMouseLeave={() => handleUnHover({ category })}
          >
            <CategoryImage url={imgUrl} alt={category.name} />
            <CategoryName key={category.id}> {category.name} </CategoryName>
          </CategoryContainer>
        ))}
      </Grid>
    </Container>
  );
};
  

Могу ли я изменить изображение без использования состояния?

Большинство вопросов обычно используют состояние для изменения изображения. Я думаю, что состояние не требуется, когда в моем случае происходят изменения (коды).

И я слышал, что производительность обычно лучше без использования состояния. Это правильно?

Всегда ценю вас, ребята 🙂

Ответ №1:

В случае 2 изображений просто добавьте свойство css. Скройте его, показав «нет», и разместите все изображения сверху….

При наведении курсора мыши или вводе в этом случае передайте имя класса , вот и все …..

Я выполнил эту задачу давно, но не могу точно вспомнить, что я сделал ,

Попробуйте это

Комментарии:

1. Мм .. вы имеете в виду использование свойства css,,?

2. Да, я пробовал это задолго до того, когда я был очень увлечен программированием… Попробуйте, это проще, чем вы делаете в приведенном выше коде

3. Примите мой ответ !! 🙂