이미지를 화면에 여러개 띄우고 각 이미지의 hover이벤트에 어떤 로직을 추가하고자함
//withHover.jsx
import { useState } from "react";
export default function withHover(InnerComponent) {
return (props) => {
const [isHovered, setIsHovered] = useState(false);
function handleMouseEnter() {
setIsHovered(true);
}
function handleMouseLeave() {
setIsHovered(false);
}
return (
<InnerComponent
{...{
...props,
handleMouseEnter,
handleMouseLeave,
isHovered
}}
/>
);
};
}
//ImageBox.jsx
import withHover from "../hoc/withHover";
function ImageBox({
imageUrl,
imageTitle,
isHovered,
handleMouseEnter,
handleMouseLeave
}) {
return (
<div>
{isHovered && <div id="hover">{imageTitle}</div>}
<img
src={imageUrl}
alt={imageTitle}
width="400px"
onMouseEnter={handleMouseEnter}
onMouseLeave={handleMouseLeave}
/>
<h5>이미지에 마우스를 올리면 이미지 제목이 표시됩니다.</h5>
</div>
);
}
//Image를 withHover로 보낸다
export default withHover(ImageBox);
import { useContext } from "react";
import { LoginContext } from "../context/LoginContext";
export default function useLogin() {
const { isLogined, setIsLogined } = useContext(LoginContext);
function loginAlert() {
if (!isLogined) {
alert("로그인 후 진행해주세요.");
} else {
alert("로그인이 완료된 상태에요^^");
}
}
return { isLogined, setIsLogined, loginAlert };
}
출처: https://narup.tistory.com/274
https://ostarblog.tistory.com/12