【发布时间】:2017-09-15 07:04:07
【问题描述】:
我的异步操作不是 http,它不使用 fetch api。那我该如何回报承诺。当我调度一个动作时,效果不是立竿见影的。我需要在完成操作后进行回调。我该怎么做?
这就是问题
console.log(this.props.items.length); // 5
this.props.dispatch(removeItem(1));
console.log(this.props.items.length); // 5
我需要能够这样做
this.props.dispatch(removeItem(1))
.then(() => this.props.dispatch(anotherAction()));
我正在使用redux-thunk 中间件。我也在使用AsyncStorage & redux-persist
store.js
import { compose, createStore, applyMiddleware } from 'redux';
import { persistStore, autoRehydrate } from 'redux-persist';
import thunk from 'redux-thunk';
import reducers from '../reducers';
import { AsyncStorage } from 'react-native';
import createLogger from 'redux-logger';
const logger = createLogger({
predicate: () => process.env.NODE_ENV === 'development'
});
const middleWare = [ thunk, logger ];
const createStoreWithMiddleware = applyMiddleware(...middleWare)(createStore);
export function makeStore(onComplete :? () => void) {
const store = autoRehydrate()(createStoreWithMiddleware)(reducers);
persistStore(store, {
storage: AsyncStorage
}, onComplete);
return store;
}
export default makeStore;
额外代码:
function removeItem(id) {
return {
type: 'REMOVE_ITEM',
id
}
}
【问题讨论】:
标签: reactjs react-native redux-thunk