javascript React Hooks setInterval
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript React Hooks setInterval相关的知识,希望对你有一定的参考价值。
import React, { useState, useEffect, useRef } from "react";
const rspCoords = {
바위: "0",
가위: "-142px",
보: "-284px"
};
const scores = {
가위: 1,
바위: 0,
보: -1
};
const computerChoice = imgCoord => {
return Object.entries(rspCoords).find(function(v) {
return v[1] === imgCoord;
})[0];
};
export default function RSP() {
const [result, setResult] = useState("");
const [imgCoord, setImgCoord] = useState(rspCoords.바위);
const [score, setScore] = useState(0);
const interval = useRef();
useEffect(() => {
interval.current = setInterval(changeHand, 100);
return () => {
clearInterval(interval.current);
};
}, [imgCoord]);
const changeHand = () => {
if (imgCoord === rspCoords.바위) {
setImgCoord(rspCoords.가위);
} else if (imgCoord === rspCoords.가위) {
setImgCoord(rspCoords.보);
} else if (imgCoord === rspCoords.보) {
setImgCoord(rspCoords.바위);
}
};
const onClickBtn = choice => () => {
clearInterval(interval.current);
const myScore = scores[choice];
const cpuScore = scores[computerChoice(imgCoord)];
const diff = myScore - cpuScore;
if (diff === 0) {
setResult("비겼습니다");
} else if ([-1, 2].includes(diff)) {
setResult("이겼습니다");
setScore(prevScore => prevScore + 1);
} else {
setResult("졌습니다.");
setScore(prevScore => prevScore - 1);
}
setTimeout(() => {
interval.current = setInterval(changeHand, 100);
}, 1000);
};
return (
<>
<div
id="computer"
style={{
background: `url(https://en.pimg.jp/023/182/267/1/23182267.jpg) ${imgCoord} 0`
}}
/>
<div>
<button id="rock" className="btn" onClick={onClickBtn("바위")}>
바위
</button>
<button id="scissor" className="btn" onClick={onClickBtn("가위")}>
가위
</button>
<button id="paper" className="btn" onClick={onClickBtn("보")}>
보
</button>
</div>
<div>{result}</div>
<div>현재 {score}점</div>
</>
);
}
以上是关于javascript React Hooks setInterval的主要内容,如果未能解决你的问题,请参考以下文章
javascript React Hooks setInterval
javascript React Hooks简单相同
javascript React hooks에서이전결과값받아올때
JS周刊#423 - React v16.8 发布:Hooks,对 Vue 来说 Hooks 意味着什么,Vue 2.6 发布
javascript React hooks - useRef로변수사용하기(값은변경되지만화면에영향끼치지않음)
[react] 使用Hooks要遵守哪些原则?