s e o p p o r t . l o g

Today I Learned

2024.01.26 TIL

Seo Ji Won 2024. 1. 26. 19:57

 

함수형 setState

const filterByAge = (minAge) => {
	//기존
    // const filteredByAgeStudent = initialStudents.filter((item) => {
    //   return item.age >= minAge
    // })
    // setFilteredStudents(filteredByAgeStudent)

	//함수형
    setFilteredStudents((prev) => {
      return prev.filter((item) => item.age >= minAge)
    })
  };

 

함수형 setState를 사용하면 초기값을 받아오지 않고도 set에 들어있는 prev 데이터를 이용해서 데이터를 가공할 수 있다.

 

setState를 컴포넌트로 넘겨주기

function App() {
  const initialStudents = [
    { name: "Alice", age: 17, grade: "A" },
    { name: "Bob", age: 18, grade: "B" },
    { name: "Charlie", age: 16, grade: "C" },
    { name: "Diana", age: 19, grade: "D" },
  ];

  const [filteredStudents, setFilteredStudents] = useState(initialStudents);

  return (
    <div>
      <h1>학생 목록</h1>
           <FilterButtons initialStudents={initialStudents} setFilteredStudents={setFilteredStudents}
      />
      	<StudentList filteredStudents={filteredStudents} />
    </div>
  );
}

FilterButtons - filter 버튼들을 출력하는 컴포넌트

StudentList - 필터 된 데이터를 출력하는 컴포넌트

 

App.jsx에서 filteredStudents를 선언하고, FilterButtons에 setFilter만 넘겨주어도 FilterButtons 컴포넌트에서 filteredStudents의 값을 설정할 수 있다. 그렇기 때문에 FilterButtons에서 StudentList를 자식 컴포넌트로 불러와서 filteredStudents를 넘겨주는 것이 아니라, 최상위 컴포넌트에서 선언된 filteredStudents를 FilterButtons에서 필터된 데이터를 set하면, StudentList에서 그 값을 불러와서 가져다 쓸 수 있다.

 

REST API란?

REpresentational State Transfer의 약자로서, 어떤 자원에 대해 CRUD를 진행할 수 있게 HTTP Method(GET, POST, PUT, DELETE)를 사용하여 요청을 보내는 것.

URI를 통해 정보의 자원(Resource)을 표현하고, 자원의 행위는 HTTP Method로 명시한다.

ex) GET /users/3/profile

→ '유저 정보들 중 3번 아이디의 프로필을 가져와' 라고 예상할 수 있다.

// bad
GET /members/delete/1
// good
DELETE /members/1

// bad
GET /members/show/1
// good
GET /members/1

// bad
GET /members/insert/2
// good
POST /members/2

 

REST API 작성 규칙

<http://example.com/posts>     (O)
<http://example.com/posts/>    (X)
<http://example.com/post>      (X)
<http://example.com/get-posts> (X)
--> URI는 명사를 사용하고 소문자로 작성되어야 한다.
--> 명사는 복수형을 사용한다.
--> URI의 마지막에는 /를 포함하지 않는다.

<http://example.com/post-list>  (O)
<http://example.com/post_list>  (X)
--> URI에는 언더바가 아닌 하이픈을 사용한다.

<http://example.com/post/assets/example>  (O)
<http://example.com/post/assets/example.png>  (X)
--> URI에는 파일의 확장자를 표시하지 않는다.

 

RestFul하다?

REST API의 조건을 만족시킨 통신 설계 상태를 말한다.

누가 보더라도 이해하기 쉽고, 사용하기 쉬운 REST API라면 ‘RestFul’ 한것

 

 

'Today I Learned' 카테고리의 다른 글

2024.01.30 TIL  (0) 2024.01.30
2024.01.29 TIL  (0) 2024.01.29
2024.01.25 TIL  (1) 2024.01.25
2024.01.24 TIL  (1) 2024.01.24
2024.01.23 TIL  (0) 2024.01.23