반응형
React Native Hooks를 이용한 Timer functional component
React Native에서 Hooks functional component를 사용한 타이머를 예제입니다.
입력 props로 주어진 sec에서 매초마다 1씩 감소하는 형식입니다.
import React, { useState, useEffect, useRef } from 'react';
import { Text, StyleSheet } from 'react-native';
var _interval
const Timer = ({ sec, style }) => {
const [second, setSecond] = useState(sec);
const [delay, setDelay] = useState(1000);
const [isRunning, setIsRunning] = useState(true);
useInterval(() => {
setSecond(second - 1)
}, second >= 1 ? delay : null);
//setIsRunning(false);
return (
<Text style={{ ...styles.text, ...style }}> {Math.floor(second / 60)} : {second % 60} </Text>
)
}
function useInterval(callback, delay) {
const savedCallback = useRef();
// Remember the latest callback.
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
// Set up the interval.
useEffect(() => {
function tick() {
savedCallback.current();
}
if (delay !== null) {
let id = setInterval(tick, delay);
return () => clearInterval(id);
}
}, [delay]);
}
const styles = StyleSheet.create({
text: {
fontSize: 13,
color: 'red'
}
})
export default Timer;
반응형
'웹, 앱 개발 > RN React-Native' 카테고리의 다른 글
[React Native] Slider 스크롤 금지 disabled 속성 (0) | 2021.02.07 |
---|---|
[React Native] Slider 활용 (0) | 2021.02.07 |
[React Native] MacBook M1 Run Android Emulator 안드로이드 에뮬레이터 구동 (0) | 2021.02.03 |
[React Native] GeoLocation 사용법 / 현재 위치 정보 불러오기 (0) | 2021.02.02 |
[React Native] react-native-timeline-flatlist API (0) | 2021.02.01 |