[React Native] 데이터 설계1 - 설계할 때 생각할 것들

Nadan
Nadan Dev Blog

개요

데이터 흐름은 ‘설계’해야 한다. 설계하지 않아도 필요할 때마다 하나씩 만들어 쓸 수 있긴 한데, 그러면 실력이 늘지 않을 뿐만 아니라 십중팔구 끼워맞추기식으로 개발하게 된다. 가설을 세우고, 검증하는 과정을 통해 먼저 생각하는 힘을 기르자.

원칙을 정해서 개발하자. 아직 판단 기준이 서지 못했을 때는 끼워맞추기식으로 하면 안 되고, 먼저 좋든 안 좋든 원칙대로 하고 그 결과를 봐야 한다. 뭘 한지도 모르면 그 결과가 나와도 성장할 수 없다. 데이터 설계할 때도 잘 모르겠으면 스스로 원칙을 정하되, 다만 근거는 두자. 예를 들어 state 값의 위치, component가 온전히 컨트롤할 것인지 아니면 부모에게 access할 수 있도록 할 것인지.

1) 어떤 데이터가 쓰일까

  • api 데이터
  • 로컬 데이터

    • asyc storage
    • sqlite
  • 디바이스 데이터

    • location

2) 데이터 위치 : 어디서 관리하면 좋을까

  • context에서 관리할 데이터
  • 화면(screen page)에서 관리할 state
  • 컴포넌트에서 관리할 state

3) 데이터(state) 흐름 : 데이터가 어떻게 움직일까

  • 데이터(state)가 각 컴포넌트(component, hook, screen, context)에서 어떻게 흘러다니는지
  • 데이터 flow 설계는 state가 어디에 있고, 어디로 흘러가지는지 파악해 내는 것

opt1) state를 component가 아니라 부모 screen에서 관리해주자. 현재 SearchBar에 term state가 있는데, state 관리는 부모에서 할 것

opt2) food에서 좀 착각한 게 있는 듯. component에 state를 다룰 때 무조건 부모에게 state가 있어야 하는 것이 아니고 해당 데이터를 사용하는 곳에 있어야 하는 듯. food에서는 result값을 받아오고 세팅하는 곳이 메인 화면이었던 것이고, blog에서 InputForm은 save를 눌렀을 때 그 데이터를 처리하는 곳에 InputForm이니까 외부에서 받아올 이유는 없음

• 결정할 사항

  • searchbar에 term이 있는 것과 메인 스크린에 있는 것의 차이는?
  • item을 클릭했을 때 넘어가는거랑, import 한 곳에서

    → state를 부모에서 관리해줄 것인지 각 component에서 관리해줄 것인지