본문 바로가기

FE/REACT

[REACT]0105

●외부 API를 가져오기 

api테스트 할때 ↓ 요거 사용함

https://jsonplaceholder.typicode.com/

 

JSONPlaceholder - Free Fake REST API

{JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. Serving ~2 billion requests each month.

jsonplaceholder.typicode.com

 

 

 

●promise

promise란?

비동기 처리에서 사용되는 객체, axios또한 promise를 기반으로 만들어짐

api로부터 데이터를 페치하기 위해서 , fetch로 url을 전달할 수 있다.

비동기의 결과를 객체화 시킨다는 점이  장점

커피숍에서 주문을 받고 음료를 만들고 음료를 서빙 후 다시 재 주문을 받고 
음료를 만드는 것이 동기적 처리이며, 
모든 사람의 주문을 한꺼번에 받고 음료가 완성되는 대로 사람들에게서빙을 하는 것이
비동기적 처리이다.

출처:https://velog.io/@autumnhee/React-async-await%EC%99%80-then-%EC%B0%A8%EC%9D%B4%EC%A0%90

나도 비동기 동기가 이해가 잘안가서 찾아봤는데 이해가 남겨서 리그램해보았다.

 

 

비동기 함수가 필요한 이유 

promise함수는 then을 사용해 호출 가능함

기본적으로 promise가 실행되자마자 then메서드 호출 ->then에서는 데이터가 도착하자마자 콜백으로 실행될 코드이다.

fetch("https://jsonplaceholder.typicode.com/todos/1")
  .then((res) => res.json())
  .then((data) => console.log(data));
console.log("yjyj");

 

 

 

promise의 단점을 보완하기 위해 async& await 등장

단점? promise의 결과로 then()을 사용해 또다른 promise를 호출하면 다른 promisechain이이 생기고 문장이 복잡해짐

이와 같은 형태를 async & await로 만들어야 함

 

async & await

사용법

함수 앞뒤로 async키워드 추가 ( 이 함수에서 비동기 처리를 위한 promise동작을 함을 명시함)

함수 내부에서 promise앞부분에 await키워드를 사용함 '(결과를 기다릴 함수 앞에 작성하면 됨)

function resolveAfter2Seconds() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve("resolved");
    }, 2000);
  });
}

async function asyncCall() {
  console.log("calling");
  const result = await resolveAfter2Seconds();
  console.log(result);
}

 

 

 

comonent  작성법

1.함수 이름은 대문자로 표시

2. 마크업 반환

 

구성요소 중첩: 말 그대로 한 구성요소 안에 다른 구성요소를 집어넣음

 

 

●props

구성 요소 간에 데이터를 전달하는 방법

상위 요소 -> 하위 요소로 이동 

부모 채널에서 , 자식 채널로 이동한다고 생각하면 된다.(기본적으로 트리구조라고 생각하면 됨)

 

1) props를 컴포넌트에 전달하기 

2) 전달한 컴포넌트에서 props받기 

 

 

이렇게 보내니, 객체 형태로 보내짐을 알 수 있다.

 

 

객체 형태에서 빼내기 위해서는 자바스크립트를 이용해야 한다.

function Movie(props) {
  console.log(props);
  return (
    <div>
      <img src={props.photoName} alt={props.name} />

      <h3>{props.name}</h3>
      <p>{props.author}</p>
    </div>
  );
}
 

이렇게 하면 화면에 값을 보여줄 수 있다.

 

 

 

cf)

ex)
자바 스크립트에서 
year="10" //문자열 선언
year={10}  //숫자 선언

 

 

react의 props규칙 

1. props는 오로지 읽을 수 밖에 없고 이는 불변한 내용이다, 리액트가 가지고 있는 엄격한 규칙중 하나이다.
2. 만약 내가 변할 수 있는 props를 원한다면 나는 state를 사용해야 함 

이유는?

구성요소의 props개체를 바꾸면 부모 구성에도 영향을 주게 됨

props와 state의 상태가 퓨어해야 애플리케이션을 최적화하고  버그를 피하며 예측이 가능하게 만들 수 있다
단방향의 데이터로 데이터의 예측을 용이하게 해서 데이터를 효과적으로 제어 가능
양방향은 구현하기에 성능이 떨어짐
그래서 

리액트는 one-way data flow임을 가지고 있음을 알아야 한다. 

cf)angular는 양방향 데이터 흐름을 사용한다.

 

■목록을 렌더링하는 방법

외우기!

      {/**영화목록 렌더링 */}
      <ul className="movies">
        {movieData.map((movie) => (
          <Movie movieObj={movie} key={movie.name} />
        ))}
      </ul>

 

 

■조건부 렌더링

삼항 연산자 

왜 if-else문을 사용할 수 없는지 

if-else문은 값을 생성하지 않기 때문 

 

 

 

 

 

 

'FE > REACT' 카테고리의 다른 글

[React] ReactQuery의 구조 & useQuery 흐름  (4) 2024.09.02
[PJ] BrowserRouter, Routes,Route 간단 정리  (0) 2024.08.28
[REACT]0103  (0) 2024.01.05
[REACT]0102  (2) 2024.01.02
[react-native] 개념 정리즁  (1) 2023.04.10