如何从redux中的promise中调度一个动作?

时间:2017-10-04 12:28:51

标签: javascript promise redux

我需要在解决时从redux中的promise中调度一个动作。 我尝试使用以下代码(注释掉)但没有成功。

你能指出我正确的方向吗?

我得到的错误是:

  

ReferenceError:未定义dispatch

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 个答案:

答案 0 :(得分:-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))
})

你可以谷歌搜索其余的,我写的很快。我对我的减速器中的响应做了我的反应