리액트는 컴포넌트를 먼저 만들고 페이지를 조립하는 상향식(bottom-up)으로 앱을 만든다.
앱의 디자인을 전달받으면, 먼저 컴포넌트 계층 구조로 나누어야 한다. 컴포넌트를 디자인할 때는 하나의 컴포넌트가 하나의 일만 할 수 있도록 나누어야 한다. 컴포넌트를 나누고 나면, 이를 트리 구조로 나타낸다. 그리고 데이터를 어디에 둘지 결정해야 하는데, 데이터는 부모 컴포넌트에서 자식 컴포넌트로 흐른다. 즉 데이터의 흐름은 하향식(top-down)이다.
만약 상태가 특정 컴포넌트에만 유의미할 경우, 특정 컴포넌트에 두면 된다. 하지만 여러 컴포넌트에서 유의미할 경우, 공통의 부모 컴포넌트에 상태를 두어야 한다.