✍ 따뜻한 개발 공부
이 코드 머에영 자세히 분석해보고 싶당
따따시
2023. 1. 13. 10:11
여기 유즈콜백 왜쓴거에영
유즈콜백이 정확하게 어떤 넘이에영
const { loadAsync } = require('expo-font');
const { useEffect, useCallback, useState } = require('react');
import * as SplashScreen from 'expo-splash-screen';
SplashScreen.preventAutoHideAsync();
const useSplashScreen = () => {
const [appIsReady, setAppIsReady] = useState(false);
const onLayoutRootView = useCallback(async () => {
if (appIsReady) {
// hideAsync : 스플래쉬 스크린이 사라져랏!
// SplashScreen.hideAsync는 appIsReady가 될때까지 기다려잉
await SplashScreen.hideAsync();
}
}, [appIsReady]);
useEffect(() => {
onLayoutRootView();
}, [appIsReady]);
useEffect(() => {
const prepare = async () => {
// 폰트가 모두 다운이 되고 나서야, setAppIsReady를 true로 바꿔주면
// App.js에서
await loadAsync({
'NotoSansKr-Bold': require('../assets/fonts/NotoSansKR-Bold.otf'),
'NotoSansKr-Medium': require('../assets/fonts/NotoSansKR-Medium.otf'),
'NotoSansKr-Regular': require('../assets/fonts/NotoSansKR-Regular.otf'),
'YiSunShin-Dotum-B': require('../assets/fonts/YiSunShin-Dotum-B.otf'),
});
setAppIsReady(true);
};
prepare();
}, []);
return { appIsReady };
};
export default useSplashScreen;