javascript React hooks - useRef로변수사용하기(값은변경되지만화면에영향끼치지않음)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript React hooks - useRef로변수사용하기(값은변경되지만화면에영향끼치지않음)相关的知识,希望对你有一定的参考价值。
import React, { useState, useRef } from "react";
const ResponseCheck = () => {
const [state, setState] = useState("waiting");
const [message, setMessage] = useState("클릭해서 시작하세요");
const [result, setResult] = useState([]);
const timeOut = useRef(null);
const startTime = useRef();
const endTime = useRef();
const onClickScreen = () => {
if (state === "waiting") {
setState("ready");
setMessage("초록색이 되면 클릭하세요.");
timeOut.current = setTimeout(() => {
setState("now");
setMessage("지금 클릭");
startTime.current = new Date();
}, Math.floor(Math.random() * 1000) + 2000);
} else if (state === "ready") {
clearTimeout(timeOut.current);
setState("waiting");
setMessage("너무 성급하시군요! 초록색이 된 후에 클릭하세요.");
} else if (state === "now") {
endTime.current = new Date();
setState("waiting");
setMessage("클릭해서 시작하세요");
setResult(prevResult => {
return [...prevResult, endTime.current - startTime.current];
});
}
};
const onReset = () => {
setResult([]);
};
const renderAverage = () => {
return result.length === 0 ? null : (
<>
<div>
평균 시간: {result.reduce((a, c) => a + c) / result.length}
ms
</div>
<button onClick={onReset}>리셋</button>
</>
);
};
return (
<>
<div id="screen" className={state} onClick={onClickScreen}>
{message}
</div>
{renderAverage()}
</>
);
};
export default ResponseCheck;
以上是关于javascript React hooks - useRef로변수사용하기(값은변경되지만화면에영향끼치지않음)的主要内容,如果未能解决你的问题,请参考以下文章
javascript React Hooks setInterval
javascript React Hooks简单相同
如何使用 React Hook 在 React 组件中引用和加载 Javascript 文件
React Hook介绍与使用心得
javascript React hooks에서이전결과값받아올때
[react] 使用Hooks要遵守哪些原则?