-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
moment.js
- ์๊ฐ์ด ํฌํจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์กฐ์ํด์ผ ํ ๊ฒฝ์ฐ ๋ง์ด ์ฌ์ฉ๋๋ ํธ๋ฆฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- ์๊ฐ์ ๋ฐ๋ผ ์ค์๊ฐ์ผ๋ก ๋ณ๊ฒฝ ๋๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ชฉํ๋ผ๋ฉด ์ฌ์ฉํด๋ณผ๋ง ํ๋ค.
- moment์ ๋ํ ์ฌ์ฉ ์ค๋ช ๋ฒ์ ๋งจ ์๋์ ๊ธฐ์ฌ ์์
์ค์น
$npm i moment
์ ์ธ
import moment from 'moment';
import 'moment/locale/ko';
ํ์ฌ ์๊ฐ
const nowTime = moment().format('YYYY-MM-DD HH:mm:ss');
console.log('ํ์ฌ ์๊ฐ', nowTime);
์ด ์ํ๋ผ๋ฉด F5 ํค๋ฅผ ๋๋ ์ ๋๋ง ์๊ฐ์ด ๋ณ๊ฒฝ๋๋ค.
setInterval ์ฌ์ฉํ์ฌ ์ค์๊ฐ ๋ฐ์ํ๊ธฐ
- ์ค์๊ฐ์ผ๋ก ์๊ฐ์ ๋ณ๊ฒฝํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ์ํฌ ๋๋ setInterval์ ์ฌ์ฉํด์ผํ๋ค.
- ๋ค๋ง, ๋ฆฌ์กํธ ํ ์์ setInterval์ ์ฌ์ฉํ์ ๋ ์์๋๋ก ์๋ํ์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ฐธ๊ณ https://overreacted.io/making-setinterval-declarative-with-react-hooks/
๊ฐ๋ต ์ค๋ช ํ๋ฉด, ๋ค์ ์ง๊ด์ ์ด์ง ์๋ค.
useInterval(() => {
// Your custom logic here
setCount(count + 1);
}, 1000);
์ด๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ ์ถ์ฒํ๋ค. ์๋๋ฉด, ์ด๊ฒ๊ณผ setInterval์ ์ฐจ์ด์ ์ ์ธ์๊ฐ '๋์ '์ด๋ค.
- ์๋ฌดํผ ์ด๋ฐ ๋ณตํฉ์ ์ธ ์ด์ ์ ์ฑ๋ฅ์์ ์ด์ ๋๋ฌธ์ ์ปค์คํ hook์ ์์ฑํ์ฌ setInterval์ ์ฌ์ฉํ ์ ๊ฐ ์๋ค.
์ปค์คํ use Hooks setInterval
// useInterval.js ์์ฑ
import { useRef, useEffect } from "react";
export default function useInterval(callback, delay) {
const savedCallback = useRef();
useEffect(() => {
// useEffect์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ์ฝ๋ฐฑ์ ํ์ฌ Ref๋ก ์ ์ธํด์ค๋ค.
savedCallback.current = callback;
});
useEffect(() => {
function tick() {
savedCallback.current();
}
// useEffect์ Ref์ current๋ฅผ setInterval๋ฅผ delay ์๊ฐ๋์ ํด์ค๋ค.
let id = setInterval(tick, delay);
// ์ธ๋ง์ดํธ๋๊ธฐ์ clearInterval์ ํด์ค๋ค.
return () => clearInterval(id);
}, [delay]);
}
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก, react-use์ useInterval ์ฌ์ฉํ๊ธฐ
๐import { useInterval } from 'react-use';
const LiveTimeContainer = () => {
const [realTime, setRealTime] = useState(Date.now());
// useInterval
๐useInterval(() => {
setRealTime(Date.now());
}, 1000);
return <div>{seconds}</div>
}
Metadata
Metadata
Assignees
Labels
No labels