2016-07-12 1 views
1

로드 또는 오류 상태와 같은 항목을 저장해야하는 위치를 파악하는 데 문제가 있습니다.오류 및로드를 상점 또는 주에 저장해야합니까?

탑재 된 서버의 데이터를 가져 오는 반응 구성 요소가 있다고 가정 해 봅니다. 내가 뭘하는지 비동기 요청 덕분에 FETCH_SOME_DATA_SUCCESS 또는 FETCH_SOME_DATA_FAILURE을 파견 할 미들웨어 덕분에 비동기 부분을 처리 할 FETCH_SOME_DATA 작업을 파견하는 것입니다.

이제 데이터를 가져 오는 동안 사용자에게 무언가가 일어나고 있음을 보여주기 때문에 무언가가로드되고 있음을 알려주는 것이 필요합니다. 내 FETCH_SOME_DATA 작업에 감속기를 반응시키고 내 상점을 업데이트하여 isLoading 값을 토글 할 수는 있지만 여기에 문제가있는 부분이 있습니다. 나에게 상점에 있으면 안되지만 구성 요소의 상태에 있어야합니다.

이상하게 들릴지도 모릅니다. 블로그의 마지막 5 개 항목과 전체 목록 (페이지가 매겨진)을 표시한다고 가정 해 봅시다. 둘 다 로더를 표시하는 것을 원하지 않습니다. 사용자가 내 목록 전체에서 "더 많은 기사보기"를 클릭 ...

정말 같은 오류가 있습니다. 내 뉴스 가져 오기가 실패했다고 가정 해 보겠습니다. 내 구성 요소가 모두 오류를 표시하는 것을 원하지 않습니다. 이들은 독립적이어야합니다. 각 구성 요소는 데이터를 가져와 페치해야하고 이에 따라 오류에 대응해야합니다.

나는 분명히하고 싶다 ... 나는 주제에 대해 강한 견해를 가지고 있지만 모든 사람들이 다르게 생각하는 것 같지만 왜 그 이유는 모르겠다. 너희들이 나에게 "임시 데이터"를 저장할 위치와 이유를 설명하기를 바랍니다.

감사합니다.

+0

정직하게도 구성 요소에는 이유가 있기 때문에 자체 상태가 있습니다. 무언가를 요청할 경우 일부 로딩보기를 보여주는 상태를 로컬로 설정할 수 있으며 요청이 들어올 때 요청의 데이터가 포함 된 소품이 채워질 것이므로 요청을받을 때 상태를 다시 설정할 수 있습니다. 로드. –

답변

0

reduxpriciples 중 하나는 사용자가 단일 진실을 가지고 있다는 것입니다. 앱은 하나의 상태 만 가지며이 상태는 상점에서 관리합니다. 상태에는 서버에서 가져온 데이터뿐만 아니라 UI의 현재 상태에 대한 정보도 포함됩니다. 따라서 현재 활성화 된 비동기 요청에 대한로드 표시기를 렌더링하려는 경우이 정보는 구성 요소가 아닌 상태로 저장됩니다.

+0

내 문제는 응용 프로그램 상태의 일부로'isLoading' 및'errors' 데이터를 볼 수 없다는 것입니다. 나에게 이것은 단지 일시적인 디스플레이 데이터 일 뿐이다. : / – nseptier

0

게시물 또는 개별 게시물의 목록을 개별적으로 가져 오는 것이 든 관계없이 저장소는 발생한 일을 반영 할 책임이 있습니다. 데이터를 가져 오는 중 오류가 발생하면 게시물 목록 축소 기나 각 게시물 항목별로 "상태"플래그를 "오류"로 설정할 수 있습니다.

귀하의 구성 요소는 현재 상태에 따라 사용자에게 무언가를 표시 할 책임이 있습니다. 고객의 PostList 구성 요소에 상점에서받은 status 소품이 있고 최종 사용자에게 유용한 정보가 표시 될 수 있습니다. 각 개별 게시물에 대해 동일한 작업이 진행되며, 가능한 상태 중 하나는 오류 상태이므로 최종 사용자에게 오류를 표시 할 수 있도록 구성 요소에 대해이 UI 상태를 정의하는 소품이 있어야합니다.