목표:
loading 텍스트가 3초 뒤에 we are ready 로 바뀌는 화면
리액트를 시작할 때 보이는 기본적인 코드 구조는 아래와 같다.
import React, { Component } from 'react';
import './App.css';
class App extends Component {
render(){
return <div>{isLoading ? "Loading..." : "we are ready"}</div>
}
}
export default App;
리액트는 자바스크립트 기반의 모듈이기에 div 속 { } 에 함수를 넣어줄 수 있다.
{ isLoading ? "Loading..." : "we are ready" }
isLoading 이 true 이면 Loading... 을 화면에 찍어주고,
false 라면 we are ready 찍어준다.
그런데 우리는 isLoading 함수의 값을 변화시켜야하기 때문에
state라는 상태값을 부여한다.
return <div>{this.state.isLoading ? "Loading..." : "we are ready"}</div>
// isLoading 을 변수에 담는 경우 코드가 더 간결
const {isLoading} = this.state;
return <div>{isLoading ? "Loading..." : "we are ready"}</div>
import React, { Component } from 'react';
import './App.css';
class App extends Component {
state = {
isLoading : true,
};
render(){
const {isLoading} = this.state;
return <div>{isLoading ? "Loading..." : "we are ready"}</div>
}
}
export default App;
componentDidMount는 render 함수 이후에 호출되는 리액트 life cycle method 이다.
(* 리액트 life cycle method 여러가지가 있는데 나중에 내용 추가하기)
import React, { Component } from 'react';
import './App.css';
class App extends Component {
state = {
isLoading : true,
};
componentDidMount(){
setTimeout(()=>{
this.setState({ isLoading : false });
},3000)
}
render(){
const {isLoading} = this.state;
return <div>{isLoading ? "Loading..." : "we are ready"}</div>
}
}
export default App;
componentDidMount 함수 안에서 data 값, 즉 여기서는 isLoading 값을 fetch 한다고 표현한다.
componentDidMount 함수 안에 딜레이 함수인 setTimeout 을 넣어 setState 로
isLoading 값을 바꾸자.
그리고
isLoading 의 false 값은 "we are ready" 이다
결과 :
화면에 Loading... 이라는 텍스트가 3초 뒤 we are ready 라는 텍스트로 변한다
'배운 것 > react & reacthooks' 카테고리의 다른 글
훅스에서 setState는 비동기다 (0) | 2019.12.25 |
---|---|
리액트 커스텀 훅 사용하기 => useTab (0) | 2019.12.21 |
리액트 커스텀 훅 사용하기 => useInput (0) | 2019.12.21 |
리액트 훅 (Reack Hooks) 간단 소개 (0) | 2019.12.21 |
[react] axios, yts api (0) | 2019.10.24 |