2017-04-26 8 views
0

간단한 React App이 있습니다. 사용자가 양식을 편집하여 데이터베이스의 데이터를 갱신 할 수 있습니다. 제출시 페이지에서 양식 데이터로 작업을 생성합니다. Redux Saga는 작업을 수행하고 비동기 적으로 데이터베이스를 업데이트합니다. 이것은 모두 작동합니다.Redux-Saga의 상태 변경

그러나 한 가지 경우에는 업데이트가 약간 더 복잡합니다. 새 데이터를 추가해야 할뿐만 아니라 양식에서 삭제 된 데이터는 일련의 API 호출로 데이터베이스에서 삭제해야합니다. 이렇게하려면 새로운 상태가 아니라 무엇이 변경되었는지 (예 : 삭제 된 항목) 알아야합니다.

내 사가가이 정보에 액세스하려면 어떻게해야합니까? 이전 주에 대한 액세스 권한이 있기 때문에 감속기에서 계산할 수 있지만 일반적으로 감속기가 새로운 조치를 파견하기위한 반 패턴으로 유지됩니다.

+0

당신이 데이터베이스를 말할 때, 그것은 서버의 데이터베이스를 의미 하는가를 논의? 양식을 편집 할 때이를 업데이트하고 있습니까? 이런 특별한 이유가 있습니까? –

+0

예, 비동기 호출을 통해 액세스 한 서버의 데이터베이스입니다. 양식을 편집 할 때가 아니라 양식을 제출하면 업데이트됩니다. 다른 방법이 있습니까? 아마 나는 완전히 잘못된 방향에서 이대로 올 것입니다. – amay

+0

양식의 중간 상태를 서버에 보내지 않으면 삭제할 필요가 없습니다. 그것들은 당신 주 (州)에있는 사람들입니다. 해당 양식을 버리고 양식의 마지막 상태 만 제출할 수 있습니다. 이것이 제가 생각하는 서버와 관련이 있습니다. 아마도 당신은 달성하려는 방법에 대한 몇 가지 코드를 추가 할 수 있습니다. 또한 어떤 라이브러리를 사용하고 있습니까? 같은 redux 양식 등? –

답변

1

사가 스는 select 효과가 있습니다.이 효과는 선택기 기능을 실행하고 추출 된 상태를 반환합니다. 당신은 돌아 오는 저장소에서 이전 및 새 항목을 검색하려면이 옵션을 사용하고, 거기에서 변경을 처리 할 수 ​​있습니다

function* handleFormUpdates() { 
    const oldItem = yield select(selectOldItem); 
    const newItem = yield select(selectNewItem); 

    const changes = diffTheItems(oldItem, newItem); 

    // make API calls to deal with changes appropriately 
} 

전반적으로,이에서 "일시적으로"또는 "초안"상태를 유지하는 좋은 이유는 Redux를 사용하여 논리에서 "현재"및 "초안"값을 모두 사용할 수 있습니다.

나는 몇 가지 관련 내 블로그 게시물 Practical Redux, Part 7: Form Change Handling, Data Editing, and Feature Reducers의 개념과 Practical Redux, Part 8: Form Draft Data Management

+0

이것이 문제라고 생각합니다. Redux 저장소에 이전 상태가 없습니다. 필자가 시도한 것은 저장소에있는 데이터를 데이터베이스에 쓰는 방식과 분리하여 뷰에 영향을주지 않으면 서 필요한대로 데이터베이스 API를 변경할 수있었습니다. 귀하의 게시물에 대한 링크를 가져 주셔서 감사합니다.하지만 모든 것을 관점으로보아야 할 수도 있습니다. – amay