2017-02-01 4 views
0

액션이 전달되면 reducer는 해당 액션을 호출 한 구성 요소를 상태에 따라 변경하고 상태에 대한 액세스도 제공합니다 (제공자가 소품을 통과 함). 내가 맞습니까?React Native Redux : 액션 파견, 결과 반환

은 상태가 구성 요소의 작업 결과에 액세스하는 유일한 방법입니까? (조치를 호출 한 구성 요소).

조치에 콜백 함수를 전달하고 그 결과를 사용하여 결과를 구성 요소로 다시 보내는 방법은 어떻습니까?

답변

4

조치가 전달되면 감속기가 조치를 호출 한 구성 요소도 그에 따라 상태를 변경하고 상태 (제공자가 소품을 통과 함)에도 액세스합니다. 내가 맞습니까?

redux 패턴에서 동작이 트리거되면 모든 reducers가 실행되지만이 유형의 동작을 수행하는 reducers 만 저장소에서 줄이기 작업을 수행합니다. 때때로 액션 유형을 반환하지 않는 액션을 가질 수 있습니다. 감속기가 응용 프로그램 저장소의 상태를 줄이려는 경우 대개 액션 객체를 반환합니다. 그렇지 않으면 필요하지 않습니다. 상태가 줄어들면 값을 렌더링하는 모든 구성 요소가 다시 렌더링된다는 것을 기억하십시오.

상태가 구성 요소의 작업 결과에 액세스하는 유일한 방법입니까? (조치를 호출 한 구성 요소).

실행 후 결과를 반환하도록 작업을 디자인 할 수는 있지만 redux 패턴을 완전히 사용하지 않을 것이라고 생각합니다.

조치에 콜백 함수를 전달하고이를 사용하여 결과를 구성 요소로 다시 보내는 방법은 무엇입니까?

나는 전에 이것을 시도한 적이 없지만 약속은 좋은 선택이라고 생각합니다. 나는 결과가있는 경우 서버에서 내 결과를 가져 오는 데 항상 axios을 사용합니다. 그러면 다른 axios가 감속기가 상태를 업데이트하기 위해 디스패치되고, 그렇지 않으면 오류 처리를위한 감속기가 전달됩니다. REDUX에서

//actions 
const axios from 'axios' 
const FETCH_ITEMS = 'FETCH_ITEMS' 
const FETCH_ITEMS_RECEIVED = 'FETCH_ITEMS_RECEIVED' 
const FETCH_ERROR = 'FETCH_ERROR' 
const SERVER_BASE_URL = 'localhost:4000/' 

export function itemsReceive(items){ 
    return { 
     type: FETCH_ITEMS_RECEIVED, 
     items 
    } 
} 

export function itemsFetchError(){ 
    return { 
     type: FETCH_ERROR, 
     errorMsg: 'There was an issue fetching items.' 
    } 
} 

//This function shall dispatch the two actions above in case we have the expected result or an error. 
export function fetchItems(){ 
    return dispatch => { 
     axios.get(SERVER_BASE_URL + 'items'). 
     then(function(res){ 
      const { data } = res 
      if(data.status === 0){ //data.status is just a status sent by my server to show the response is good. 
       const items = data.response 
       dispatch(itemsReceive(items)) 
      }else{ 
       dispatch(itemsFetchError()) 
      } 
     }).catch(function(err)){//this error here is usually caused by network disruption 
       dispatch(itemsFetchError()) 
     } 
    } 
} 
+0

자세한 답변을 보내 주셔서 감사합니다. – Ataomega

+0

안녕하세요, @Ataomega – cdaiga

1

, 조치가 전달되는 경우, 환원제는, 따라서 상태 변경 될 액션을 호출 한 성분은 또한 (제공자 소품 통과) 상태로 액세스. 내가 맞습니까?

네, 맞습니다. 액션이 전달되면 액션 크리에이터를 지정해야하며 동기화 또는 비동기 액션 (썽크 또는 무용담 사용)을 발생시킬 수있는 액션 생성자와 각각의 액션 생성에는 actionType 및 payload가 있습니다 (옵션 : 액션 작성자 내부의 액션 호출시 모든 리듀서 통보 얻고 작용에 의해 전달 된 유형과 일치합니다.

가 구성 요소의 행동의 결과에 액세스 할 수있는 유일한 방법 상태인가? (동작을 호출 한 구성 요소).

을 redux 모범 사례로서 상태는 감속기 (순수 함수로)에 의해 변경되어야하며,이 상태를 듣는 경우 구성 요소로 전달됩니다.

조치에 콜백 함수를 전달하고이를 사용하여 결과를 구성 요소로 다시 보냅니 까?

콜백 함수를 액션 생성자에게 전달할 수 있으며, 액션 생성자는 함수입니다.

관련 문제