2016-06-16 3 views
0

모든 돌아 오는-썽크 미들웨어의 포인트를 얻을 수 없습니다 :

내가 돌아 오는, 꽤 새로운 오전 나는 http://redux.js.org/docs/advanced/AsyncActions.html

가 썽크라는 개념이 비동기 작업에 대한 튜토리얼을 따라 할 때, 내가 할 우리가 왜 비동기 액션을 수행해야하는지에 대한 아이디어를 얻지 못했습니다. 왜 단순히 init 시그널을 보내고, 데이터를 가져오고, 데이터를 가져 오는 약속에서 finish 시그널을 전달할 수 없습니까?

function fetchDataAction(dispatch){ 
    dispatch({ 
     type: "START" 
    }) 
    fetch("DATA_URL") 
     .then(function(res){return res.json();}) 
     .then(function(json){ 
      dispatch({ 
       type: "SUCCESS", 
       data: json 
      }) 
     }) 
} 

감사

+0

당신은 질문에 뱀을 꽤 묘사했습니다. 데이터의 페치는 비동기 적으로 발생하므로 디스패치는 응답을 받으면 트리거 될 수 있습니다. –

+0

@MarioTacke 감사합니다. 그래서 썽크는 제가 여기에 넣은 것을하기위한 멋진 말입니다. 대부분의 작업에서 데이터를 가져 오는 것만으로도 쓰레기가 필요하지 않습니다. – Kuan

+1

썽크는 멋진 단어 이상입니다. redux가 작동하는 방식은 모든 작업이 감속기가 즉시 사용할 수있는 동작을 반환해야한다는 것을 이해합니다. 비동기 작업은 나중에 데이터를 반환하기 때문에 (읽기 : 즉시 사용하지 않음) 데이터를 받으면 특정 작업을 실행하기 위해 애비뉴를 열어야합니다. 이를 위해 많은 프로젝트에서'redux-thunk' 미들웨어를 사용합니다. –

답변

1

돌아 오는 점은 액션으로 일반 객체를 인식하고 있습니다. 따라서 상점에는 dispatch 오브젝트 만 가능합니다. redux-thunk은 기능을 작업으로 인식하도록 저장소에 지시합니다. 저자 자신이 읽고 더 많은 정보에 대한 redux-thunk를 들어 : 그것에 대해 생각하는 How to dispatch a Redux action with a timeout?

다른 방법은 redux-thunk 당신에게 당신이 원하는대로 전달할 수 있도록 직접 dispatch에 액세스하는 방법을 제공하는 것입니다.

redux-thunk이 없으면 작업 작성자의 매개 변수로 dispatch이 없습니다. 이 경우 fetchDataActionredux-thunkdispatch을 매개 변수로 지정하기 때문에 작동합니다.