💡 React는 지속적으로 데이터가 변화하는 대규모 애플리게이션을 만들기 위한 좋은 방법이다.
FilterableProductTable
(노란색): 예시 전체를 포괄한다.SearchBar
(파란색): 유저의 입력(input
) 을 받는다.ProductTable
(연두색): 유저의 입력(input
)을 기반으로 데이터 콜렉션(data collection
)을 필터링 해서 보여준다.ProductCategoryRow
(하늘색): 각 카테고리(category
)의 헤더를 보여준다.ProductRow
(빨강색): 각각의 제품(product
)에 해당하는 행을 보여준다.💡 컴포넌트 계층 구조
FilterableProductTable
SearchBar
ProductTable
ProductCategoryRow
ProductRow
props
를 이용해 데이터를 전달한다.props
는 부모 컴포넌트가 자식 컴포넌트에게 데이터를 전달할 때 사용된다.state
를 사용하지 않는다.state
는 시간이 지남에 따라 바뀌는 데이터를 다룰 때 사용한다.state
을 생각해봐야 한다.state
는 무엇인지 파악props
를 통해 전달됩니까?state
나 props
를 가지고 계산 가능한가요?props
를 통해 전달되므로 state
가 아니다.props
를 통해 전달되지 않으며, 시간이 지남에 따라 변하고, 다른 것들로부터 계산되지 않으므로 state
이다.state
가 아니다.state
를 변경하거나 소유할지 찾아야 한다.
state
를 기반으로 렌더링하는 모든 컴포넌트를 찾는다.- 공통 소유 컴포넌트 (
common owner component
)를 찾는다. (계층 구조 내에서 특정state
가 있어야 하는 모든 컴포넌트들의 상위에 있는 하나의 컴포넌트)- 공통 혹은 더 상위에 있는 컴포넌트가
state
를 가져야 한다.state
를 소유할 적절한 컴포넌트를 찾지 못했다면,state
를 소유하는 컴포넌트를 하나 만들어서 공통 소유 컴포넌트로 추가한다.
위 전략을 애플리케이션에 적용
state
를 소유해야 한다.state
를 업데이트하기를 원한다.SearchBar
컴포넌트에서 상위 컴포넌트인 FiterableProductTable
의 state
를 변경해야 한다.props
를 통해 자식 컴포넌트에게 자신의 setState
함수를 호출하는 함수를 전달하면 된다.참고: React 공식문서