這篇 redux在react-native上使用(二)--加入saga 是使用redux-saga
, 能夠跟這篇作個對比看下redux-thunk
和redux-saga
使用上的區別.react
直接在這項目上修改, 只是把redux-thunk
替換了redux-saga
, 仍是達到同樣的項目.npm
首先在package.json
裏添加redux-thunk
庫, 並在目錄下npm install
:json
"dependencies": { ... "redux-thunk": "^2.2.0" },
把sagas.js
文件刪除, 修改下store.js
文件:redux
import { createStore, applyMiddleware, compose } from 'redux'; import createLogger from 'redux-logger'; import thunk from 'redux-thunk'; import rootReducer from './reducers'; const configureStore = preloadedState => { return createStore ( rootReducer, preloadedState, compose ( applyMiddleware(thunk, createLogger()) ) ); } const store = configureStore(); export default store;
redux-thunk
處理業務邏輯放在action
裏, 因此還要修改下actions.js
:segmentfault
import { START, STOP, RESET, RUN_TIMER } from './actionsTypes'; const startAction = () => ({ type: START }); const stopAction = () => ({ type: STOP }); const resetAction = () => ({ type: RESET }); const runTimeAction = () => ({ type: RUN_TIMER }); var t = -1; export const start = ()=> { return dispatch => { dispatch(startAction()); if(t != -1) return; t = setInterval(() => { dispatch(runTimeAction()); }, 1000); }; } export const stop = ()=> { return dispatch => { dispatch(stopAction()); if (t != -1) { clearInterval(t); t = -1; } } } export const reset = ()=> { return dispatch => { dispatch(resetAction()); dispatch(stop()); } }
OK, 大功告成, commond+R
運行.react-native