-
useState는 리액트의 기본 기능입니다.
아래와 같이 임포트하여 사용 가능합니다.
import React,{useState,useEffect} from 'react';
- 기본 공식 (상태변수 초기화)
const [state, setState] = useState([])
useState는 2개를 받는다.
- 컴포넌트 안에서 데이터를 관리할 상태 변수: State
- 데이터가 변화되면 setState 함수로 데이터를 변화시킴
*useState는 한 컴포넌트 안에 여러개 놓을 수 있다.
기본 state, 로딩상태의 state, 등등
- 메인페이지에서 사용한 useState
const [ready,setReady] = useState(true)
(데이터가 준비되기 전 로딩화면을 먼저 보여줌)
- 이거를 useEffect 에 적용해본다면?
useEffect(()=> { setState(data) },[])
화면이 그려지자마자 변경된 데이터를 적용한다.
useEffect 는 화면이 그려진 다음 가장 먼저 실행이 됩니다.
- 기본 공식
useEffect(() => { },[])
- 메인 페이지의 useEffect
useEffect(()=>{ setTimeout(()=>{ navigation.setOptions({ title:'나만의 꿀팁' }) firebase_db.ref('/tip').once('value').then((snapshot) => { console.log("파이어베이스에서 데이터 가져왔습니다!!") let tip = snapshot.val(); setState(tip) setCateState(tip) getLocation() setReady(false) }); },1000)
useState와 useEffect 그리고.. true?
const [ready,setReady] = useState(true) useEffect(()=>{ setTimeout(()=>{ navigation.setOptions({ title:'나만의 꿀팁' }) firebase_db.ref('/tip').once('value').then((snapshot) => { console.log("파이어베이스에서 데이터 가져왔습니다!!") let tip = snapshot.val(); setState(tip) setCateState(tip) getLocation() setReady(false) }); },1000) },[])
아직 데이터를 불러오지 못했다고?
그럼 ready를 true !
1초가 지나고 데이터를 불러왔다고?
그럼 setReady를 false!
상태의 데이터가 변경되면 return 이 다시 실행된다
그러니까..
const [ready,setReady] = useState(true)
ready가 true 상태였는데.. 1초가 지나고 fales가 되었잖아
setTimeout(()=>{ navigation.setOptions({ title:'나만의 꿀팁' }) firebase_db.ref('/tip').once('value').then((snapshot) => { console.log("파이어베이스에서 데이터 가져왔습니다!!") let tip = snapshot.val(); setState(tip) setCateState(tip) getLocation() setReady(false) }); },1000)
setReady(false) ← 이렇게 상태가 변화되었기 때문에 return을 다시 실행이 되고..!
리턴이 재시작하면서 조건문의 다른 조건이 적용된다.
return ready ? <Loading/> : ( <ScrollView style={styles.container}> ...
'프로그래밍 > 스파르타코딩 | 앱 개발 종합반' 카테고리의 다른 글
5주차 | 스파르타코딩 앱개발 마무리 (2) 2021.09.07 React | Stack.Navigator를 만들어보자! (0) 2021.09.06 React | Component를 만드는 법 (0) 2021.09.06 4주차 | 서버 (0) 2021.09.05 3주차 | 리액트 네이티브 기본 지식 (0) 2021.08.26 댓글