我的理解是,redux-thunk或redux-saga的出现只是为了把异步业务代码从组件剥离,而并非解决redux无法处理异步状态问题的把?
纯redux使用中,完全可以在useEffect调用接口,并在回调函数中dispatch同步action,
import {fetchUser} from './services'
import {saveUser} from './actions'
function App({dispatch}) {
useEffect(() => {
fetchUser().then(res => dispatch(saveUser(res.user)))
}, [])
}
相比较纯redux,redux-thunk只不过把调用接口封装成了一个异步action creator而已啊,
import {fetchUser} from './services'
import {saveUser} from './actions'
function saveUserAsync() {
return function (dispatch) {
fetchUser().then(res => dispatch(saveUser(res.user)))
}
}
function App({dispatch}) {
useEffect(() => {
dispatch(saveUserAsync())
}, [])
}
redux-saga和redux-thunk类似,只不过用的是generater函数而已。
我想请教一下,我这么理解有什么问题吗?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…