하는 프로젝트를 진행하고 있습니다.
1- 화면에 50개의 원을 표시해야 합니다. 2- 내 데이터는 실시간으로 스트리밍됩니다. {id:0,color:"red"}를 저장하고 있는 객체 형태의 데이터입니다. 예를 들어 실시간 데이터의 id가 {id:10,color:"pink"}인 경우. 원 번호 10 색상은 분홍색이어야 합니다. 단순성을 위해 난 난수를 생성하기 위한 사용자 정의 후크를 생성하고 있습니다. //RandomNumber()는 사용자 정의 후크입니다.
const [random,setRandom]=RandomNumber();
useEffect(()=>{
console.log(random);
if(random>10 && random<200)
{
setColor("Red")
}
else if(random>500)
{
setColor("brown")
}
})
return (
<div className="show-data" onWheel={onWheelHandler}>
{
Array.apply(null, { length: 50 }).map((a, i) => (
pad=="60px"?
<button className="wave-circle" style={{backgroundColor:color,padding:pad}} onMouseOver={onMouseOverHandler} onClick={onClickHandler} onMouseOut={onMouseLeaveHandle } key={i}>
{i+1}
</button>
:
<button className="wave-circle" style={{backgroundColor:color,padding:pad}} value={i+1} onMouseOver={onMouseOverHandler} onClick={onClickHandler} onMouseOut={onMouseLeaveHandle} key={i}>
</button>
) ,
)
}
(1) "원" 데이터의 배열은 상태에 저장되어야 합니다. (2) 스트리밍 데이터가 처리될 때마다 이전 배열을 새 배열에 매핑하고 ID를 일치시켜 특정 요소를 업데이트합니다.
예시:
function App() {
const [circles, setCircles] = React.useState(
Array.from({ length: 50 }, (_, id) => ({
id,
color: "red"
}))
);
// Simulate data on interval
React.useEffect(() => {
const tick = () => {
setCircles((circles) => {
const id = Math.floor(Math.random() * circles.length);
return circles.map((c) => (c.id === id ? { ...c, color: "brown" } : c));
});
};
const timer = setInterval(tick, 250);
return () => clearInterval(timer);
}, []);
return (
<div className="App">
{circles.map(({ id, color }) => (
<div key={id} className="circle" style={{ backgroundColor: color }} />
))}
</div>
);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다