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

μ„±ν›ˆΒ·2021λ…„ 8μ›” 3일
0

TIL

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

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

REST API μ‚¬μš©


PUT - Update

fetch('데이터λ₯Ό μ—…λ°μ΄νŠΈν•  endpoint/id',{
      method: 'PUT',
      headers: {
      	'Content-Type': 'application/json'
      },
      body : JSON.stringify({
      	μ—…λ°μ΄νŠΈν•  데이터 ν‚€ : 데이터 κ°’
      })
})
.then(res=>{
	if(res.ok){
    	alert('μ—…λ°μ΄νŠΈκ°€ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.')
    }
})

μœ„μ™€ 같은 ν˜•μ‹μœΌλ‘œ μ‚¬μš©ν•œλ‹€.
fetch의 λ‘λ²ˆμ§Έ 인자λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 기본적으둜 GETλ©”μ†Œλ“œκ°€ μ‚¬μš©λ˜λ©°, λ‘λ²ˆμ§Έ 인자λ₯Ό μ‚¬μš©ν•  κ²½μš°μ—λŠ” HTTP μš”μ²­ 메세지λ₯Ό μž‘μ„±ν•œλ‹€.

method μ—λŠ” μ‚¬μš©ν•  λ©”μ†Œλ“œλ₯Ό 적어쀀닀.

headersλŠ” headerλ₯Ό ν”„λ‘œνΌν‹°λ‘œ 가진 객체λ₯Ό 가지며 'Content-Type' 같은 κ²½μš°λŠ” PUTν•˜λŠ” λ°μ΄ν„°μ˜ μ’…λ₯˜λ₯Ό λͺ…μ‹œν•˜λŠ” 헀더이닀.

bodyλŠ” μ‹€μ§ˆμ μœΌλ‘œ μ—”λ“œν¬μΈνŠΈμ— μ—…λ°μ΄νŠΈν•  νŽ˜μ΄λ‘œλ“œκ°€ λ“€μ–΄κ°„λ‹€.


DELETE

fetch(`데이터λ₯Ό μ‚­μ œν•  μ—”λ“œν¬μΈλ“œ/id`, {
      method: 'DELETE'
      })

DELETE λ©”μ†Œλ“œμ˜ κ²½μš°λŠ” 데이터 μ‚­μ œλ§Œ ν•˜λ©΄ λ˜κΈ°μ— 별닀λ₯Έ header 및 bodyλ₯Ό 적지 μ•Šμ•„λ„ λœλ‹€.


POST - Create

fetch('데이터λ₯Ό 생성할 endpoint',{
      method: 'POST',
      headers: {
      	'Content-Type': 'application/json'
      },
      body : JSON.stringify({
      	μΆ”κ°€ν•  데이터 ν‚€ : 데이터 κ°’
      })
})
.then(res=>{
	if(res.ok){
    	alert('데이터가 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.')
    }
})

μ—­μ‹œ λΉ„μŠ·ν•˜κ²Œ μ‚¬μš©ν•˜λ©° μΆ”κ°€ν•  λ°μ΄ν„°μ˜ κ²½μš°λŠ” endpoint둜 데이터λ₯Ό 생성할 path만 λ„£μ–΄μ£Όλ©΄ λœλ‹€.
그리고 κ·Έ μ™Έ κΈ°μ‘΄ λ°μ΄ν„°μ™€μ˜ ν˜•μ‹μ— λ§žμΆ°μ„œ 데이터λ₯Ό 생성해쀀닀.


useRef Hook

useRefλŠ” 돔에 μ ‘κ·Όν•  수 있게 ν•΄μ£ΌλŠ” 훅이닀.
이 useRefλ₯Ό 포컀슀λ₯Ό μ£Όκ±°λ‚˜ 슀크둀 μœ„μΉ˜λ₯Ό ν™•μΈν•˜λŠ” 것 등에 μ‚¬μš©ν•  수 μžˆλ‹€.

function Comp () {
  const varRef = useRef(null)
  return (
  	<div>
    	<input type='text' ref={varRef} />
    	<button onClick={()=>{console.log(varRef.current.value)}}>μž…λ ₯</button>
    </div>
  )
}

μœ„μ™€ 같이 λ³€μˆ˜μ— ν• λ‹Ήν•œ λ‹€μŒ jsx λ‚΄ DOM μš”μ†Œμ— ref μ†μ„±μœΌλ‘œ μ—°κ²°ν•œλ‹€.

이럴 경우 데이터가 κ°μ²΄ν˜•νƒœλ‘œ varRef에 λ‹΄κΈ°κ²Œ 되며,
currentλΌλŠ” ν”„λ‘œνΌν‹° 킀에 DOM μš”μ†ŒμΈ input이 κ°’μœΌλ‘œ λ‹΄κΈ΄λ‹€.

그렇기에 varRef.current.value둜 input의 valueλ₯Ό μ‚¬μš©ν•  수 있게 λ˜λŠ” 것이닀.


useHistory()

useHistoryλŠ” λ¦¬μ•‘νŠΈ 훅은 μ•„λ‹ˆκ³  λ¦¬μ•‘νŠΈ λΌμš°ν„°(react-router)μ—μ„œ μ§€μ›ν•˜λŠ” λ©”μ†Œλ“œμ΄λ‹€.

const variable = useHistory();
// λ‹€μŒκ³Ό 같이 ν• λ‹Ήν•˜κ³ ,
variable.push(`url-path`)
// λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•˜λŠ”λ°, ν•΄λ‹Ή μ½”λ“œκ°€ μ‹€ν–‰λ λ•Œ host의 ν•΄λ‹Ή path둜 μ΄λ™ν•˜κ²Œ λœλ‹€.

λ¦¬μ•‘νŠΈ 돔 λΌμš°ν„°μ˜ <Link to='~'>처럼 a νƒœκ·Έλ₯Ό μ΄μš©ν•˜μ§€ μ•Šκ³ λ„ νŽ˜μ΄μ§€λ₯Ό μ΄λ™ν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€.

TO DO πŸ”₯

  • 가상돔 μ •λ¦¬ν•˜κΈ°

Retrospect 🧐

μ˜€λžœλ§Œμ— λ¦¬μ•‘νŠΈλ₯Ό λ§Œλ‚˜μ„œ μ›¬λ§Œν•œκ±΄ λ‹€ κΈ°μ–΅ν•œλ‹€κ³  μƒκ°ν–ˆλŠ”λ°, μ•„λ‹ˆλ‚˜ λ‹€λ₯ΌκΉŒ μ—­μ‹œλ‚˜ μžŠμ–΄λ¨Ήμ€κ²Œ λ„ˆλ¬΄ λ§Žμ•˜λ‹€.

μ½”λ”©μ•™λ§ˆλ‹˜ 유튜브λ₯Ό λ³΄λ©΄μ„œ λ‹€μ‹œ λ³΅μŠ΅ν–ˆλŠ”λ° κ·Έλ•Œμ˜ 기얡이 λ– μ˜€λ₯΄λ©΄μ„œ PTSD 머리가 μ•„νŒŒμ™”λ‹€ πŸ˜‡

μ˜€λŠ˜μ€ λΉ λ₯Έ 수면 ~~λΉ λ₯Έ 수면이 1μ‹œ~으둜 머리쒀 μ‹νžŒ λ‹€μŒμ—

내일 아침에 빨리 μΌμ–΄λ‚˜μ„œ λ¦¬μ•‘νŠΈκ°€ ν™œμš©ν•˜λŠ” 이 가상돔을 정리해봐야겠닀.

Reference πŸ™‡

μ½”λ”©μ•™λ§ˆλ‹˜ 유튜브

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

0개의 λŒ“κΈ€