TIL - 21.07.18 πŸ‘¨β€πŸ’» - React

μ„±ν›ˆΒ·2021λ…„ 7μ›” 18일
0

TIL

λͺ©λ‘ 보기
32/59
post-thumbnail

TIL - 21.07.18 πŸ‘¨β€πŸ’»

  • λ…Έλ§ˆλ“œμ½”λ” ~#4.2
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1단계

useEffect 겉핑기

React class μ»΄ν¬λ„ŒνŠΈμ˜ componentDid~애듀은 ν•˜λ˜ μž‘μ—…μ€ ν•¨μˆ˜ μ»΄ν¬λ„ŒνŠΈμ—μ„œ useEffect Hook으둜 ν•  수 μžˆλ‹€.

useEffect()λŠ” componentDidMount(), componentDidUpdate(), componentWillUnmount() 세가지가 합쳐진 κ²ƒμœΌλ‘œ λ³Ό 수 μžˆλ‹€.

componentDidMount() λŠ” μ»΄ν¬λ„ŒνŠΈ 졜초 λ Œλ”μ‹œ μ‹€ν–‰,
componentDidUpdate() λŠ” μŠ€ν…Œμ΄νŠΈ λ³€κ²½μœΌλ‘œ μ»΄ν¬λ„ŒνŠΈκ°€ λ¦¬ν”„λ ˆμ‰¬ 될 λ•Œ μ‹€ν–‰,
componentWillUnmount() λŠ” μ»΄ν¬λ„ŒνŠΈ μ’…λ£Œμ‹œ μ‹€ν–‰λœλ‹€.

κ·Έ 쀑 componentDidMount 같은 κ²½μš°λŠ” useEffect의 λ‘λ²ˆμ§Έ 인자둜 빈 배열을 λ„£μœΌλ©΄ κ΅¬ν˜„ κ°€λŠ₯ν•˜λ‹€.


prop-types

prop typesλŠ” 전달 λ°›λŠ” ν”„λ‘­μŠ€κ°€ λ‚΄κ°€ μ›ν•˜λŠ” μžλ£Œμ—΄μΈμ§€ ν™•μΈν•΄μ£ΌλŠ” λ©”μ†Œλ“œμ΄λ‹€.

npm i prop-types둜 μ„€μΉ˜ν•˜κ³  import PropTypes from 'prop-types'둜 λΆˆλŸ¬μ˜¨λ‹€.

ν”„λ‘­μŠ€ λ°›λŠ” μ»΄ν¬λ„ŒνŠΈλ‘œ κ°€μ„œ ν•¨μˆ˜ λ°–μ—μ„œ μ‚¬μš©ν•˜κ²Œ λ˜λŠ”λ°,

import PropTypes from 'prop-types'

Component.propTypes = {
  key1: PropTypes.string
  key2: PropTypes.number.isRequired
}
// μ—¬κΈ°μ„œ ν¬λ‘œνΌν‹° ν‚€κ°€ key1인 값이 μ „λ‹¬λ˜μ§€ μ•Šκ±°λ‚˜ string이어야 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•Šκ³ ,
// key2의 κ²½μš°λŠ” ν”„λ‘œνΌν‹° 값이 numberμ—¬μ•Ό 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. (μ „λ‹¬λ˜μ§€ μ•Šμ•„λ„ 였λ₯˜ λ°œμƒ)
  

async, await

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 기본적으둜 비동기적이기에 데이터 정보λ₯Ό μ „λΆ€ 뢈러였기 전에 μ‹€ν–‰λ˜λ©΄ μ•ˆλ˜λŠ” μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ” κ²½μš°κ°€ μžˆλ‹€.

κ·Έ 경우 async ν‚€μ›Œλ“œμ™€ await ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜κ²Œ λ˜λŠ”λ°,
데이터λ₯Ό λΆˆλŸ¬μ˜€λŠ” ν•¨μˆ˜ μ•žμ— asyncλ₯Ό λΆ™νžˆκ³  데이터λ₯Ό 직접 κ°€μ Έμ˜€λŠ” λ©”μ†Œλ“œ μ•žμ— awaitλ₯Ό λΆ™ν˜€μ„œ async ν•¨μˆ˜ μ•ˆ, await ν‚€μ›Œλ“œκ°€ 뢙은 ν•¨μˆ˜(λ©”μ†Œλ“œ) λ‹€μŒ μ½”λ“œλ₯Ό λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰λ˜κ²Œ ν•˜λŠ” 것이닀.

  const getMovies = async () =>{
    const {data: {data: {movies}}} = await axios.get('https://yts.mx/api/v2/list_movies.json?sort_by=rating');
    setMovies(movies);
    setIsLoading(false);
  }
  // axiosλŠ” fetch와 μœ μ‚¬ν•œλ°, npm i axios ν•˜κ³  λΆˆλŸ¬μ˜€λŠ” κ²ƒμœΌλ‘œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.

  useEffect(()=> {
    getMovies();
  }, [])
//  useEffect 훅을 μ΄μš©ν•΄μ„œ componentDidMount 와 같이 μ»΄ν¬λ„ŒνŠΈ 졜초 λ Œλ”μ‹œμ—λ§Œ μ‹€ν–‰λ˜κ²Œ ν–ˆλ‹€.

// λ…Έλ§ˆλ“œ μ½”λ”μ˜ λ¦¬μ•‘νŠΈ 클둠코딩 도쀑에 λ‚˜μ˜¨ μ½”λ“œμ΄λ‹€.

TO DO πŸ”₯

  • React

    • λ…Έλ§ˆλ“œμ½”λ” #4.3~
  • JavaScript

    • μž¬κ·€ν•¨μˆ˜

Retrospect 🧐

κ²°κ΅­ 주말에 κ°€μ‘±λ“€μ΄λž‘ μ™•μ°½ 놀아버렸닀.
λ°˜μ„±μ’€ ν•˜μž 🀦

Reference πŸ™‡

https://ko.reactjs.org/
https://nomadcoders.co/

profile
μ–΄λ–»κ²Œ 이걸 ν’€μ–΄λ‚Ό 수 μžˆμ„κΉŒ

0개의 λŒ“κΈ€