2017-10-04 4 views
0

약속을 지키지 않은 상태에서 약속을 파견해야합니다. 다음 코드 (주석 처리 된)를 시도했지만 성공하지 못했습니다.redux에서 약속을 수행하는 방법은 무엇입니까?

올바른 방향으로 나를 가르쳐 주시겠습니까? 내가 할

오류는 다음과 같습니다

ReferenceError: dispatch is not defined

const getLocations = (query:string):ActionType => { 
 
    const value = query.trim() 
 

 
    if (!value.length) { 
 
    return ({ 
 
     type: null, 
 
     payload: null 
 
    }) 
 
    } 
 

 
    return ({ 
 
    type: types.GET_LOCATIONS, 
 
    payload: new Promise((resolve, reject) => { 
 
     fetch(api.find(query)).then(response => { 
 
     resolve(response.json()) 
 
     // dispatch(myAction()) 
 
     }) 
 
    }) 
 
    }) 
 
}

+1

비동기 작업 [here] (http://redux.js.org/docs/advanced/AsyncActions.html)에서 문서 페이지를 확인하고 [redux- 썽크] (https://github.com/gaearon/redux-thunk)와 내가 선호하는 [redux-saga] (https://github.com/redux-saga/redux-saga)를 비동기 데이터 흐름에 사용할 수 있습니다. – cssko

답변

-1

당신은 시도 약속을 잡을 미들웨어가 필요 REDUX

https://www.npmjs.com/package/redux-promise

//index.js 
import { createStore, applyMiddleware } from 'redux'; 
import reduxPromise from 'reduxPromise'; 

const store = createStore(reducers, applyMiddleware(reduxPromise))); 

ReactDOM.render(
<Provider store={store}> 
    <App /> 
</Provider> 
, rootEl); 
,

는 당신의 행동에

return ({ 
    type: GET_LOCATIONS, 
    payload: fetch(api.find(query)) 
}) 

당신이 나머지를 구글 검색 할 수 있습니다, 나는 빨리이 쓴 약속을 반환합니다. 내 감속 기관의 응답에 대한 나의 반응은

관련 문제