Search code examples
javascriptreactjsimageonmouseoverstateless

How to change image src when onMouseEnter div in react stateless component


I'm beginner in react. I want to change my image src when mouse enter the div.

Here is my code.

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>
  );
};

Can I change image without using state?

Most of Questions usually use state to change image. I think state isn't needed when changes occurs in my case(codes) though.

And, I heard that performance usually better without using state. Is that right?

Always Appreciate u guys:)


Solution

  • In case of 2 images , just add css property. Hide it by display none , and position all the images at top ....

    On mouse over or enter , in this event , pass the class name , that's it .....

    I did this task long back, but can't remember exactly what I had done ,

    Try this