0
AsyncStorage & redux-persistと一緒に私の反応するネイティブアプリでredux-thunkを使用しています。当然のことながら、アクションをディスパッチした後に状態が変化するのには遅れがあります。私の場合asyncstorage + redux thunk + reduxディスパッチ時のコールバック
console.log(this.props.counter); // 1
this.props.dispatch(incrementCounter());
console.log(this.props.counter); // still 1 ?
で
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;
ので、私は何をする必要があるか
this.props.dispatch(incrementCounter())
.then(() => console.log(this.props.counter)); // 2
がどのように私はこれを達成することができますようにディスパッチ関数にコールバックのようなPromiseを追加するのですか?私はsetTimeoutを使用したが、私はその信頼できるオプションとは思わない。