Reactjs 在redux传奇中的异步函数之后做一些工作
我正在和redux saga合作一个项目。 我以前用过thunk,所以我可以在api请求后做一些工作,比如Reactjs 在redux传奇中的异步函数之后做一些工作,reactjs,redux,redux-saga,Reactjs,Redux,Redux Saga,我正在和redux saga合作一个项目。 我以前用过thunk,所以我可以在api请求后做一些工作,比如 componentDidMount(){ login().then((success)=>{ redirectToProfilePage(); }) } 因为redux thunk中的行动回报了承诺。 但当我在redux传奇中尝试这样做时,我不能使用然后,因为传奇并没有回报承诺 所以我使用componentWillReceiveProps来解决这个问题,但我认为这不
componentDidMount(){
login().then((success)=>{
redirectToProfilePage();
})
}
因为redux thunk中的行动回报了承诺。
但当我在redux传奇中尝试这样做时,我不能使用然后,因为传奇并没有回报承诺
所以我使用componentWillReceiveProps来解决这个问题,但我认为这不是一个合适的解决方案
我应该在saga generator中做这项工作吗?或者还有其他更好的方法吗?为了充分发挥传奇的潜力,您需要在componentDidMount中发送一个动作 在该组件的sagas.js文件中,创建函数生成器以侦听componentDidMount中的操作:
function* listenForLoginAction(){
yield takeLatest('LOGIN_ACTION', loginSaga)
}
然后,loginSaga将按照您告诉它的顺序处理异步内容。您的loginSaga可能看起来像这样:
function* loginSaga(action){
try{
const loginResponse = yield call(loginFunc, varsForloginFunc)
yield put({type: 'LOGIN_SUCCESS', loginResponse})
} catch (error) {
yield put({type: 'LOGIN_FAIL', message: error.message})
}
}
使用yield call
和yield put
,结合使用takeLatest
或takeEvery
监听特定操作,可以编写等待执行的代码,直到上面的行完成
希望有帮助 为了充分发挥传奇的潜力,您需要在componentDidMount中调度一个动作 在该组件的sagas.js文件中,创建函数生成器以侦听componentDidMount中的操作:
function* listenForLoginAction(){
yield takeLatest('LOGIN_ACTION', loginSaga)
}
然后,loginSaga将按照您告诉它的顺序处理异步内容。您的loginSaga可能看起来像这样:
function* loginSaga(action){
try{
const loginResponse = yield call(loginFunc, varsForloginFunc)
yield put({type: 'LOGIN_SUCCESS', loginResponse})
} catch (error) {
yield put({type: 'LOGIN_FAIL', message: error.message})
}
}
使用yield call
和yield put
,结合使用takeLatest
或takeEvery
监听特定操作,可以编写等待执行的代码,直到上面的行完成
希望有帮助 谢谢你的帮助。但我想这不是我要问的。异步工作完成后,我想在调度操作的组件中做一些工作。@AnandS很抱歉回复得太晚了。。我正在尝试在异步工作完成后设置状态。或者滚动到某个元素。谢谢帮助。但我想这不是我要问的。异步工作完成后,我想在调度操作的组件中做一些工作。@AnandS很抱歉回复得太晚了。。我正在尝试在异步工作完成后设置状态。或者滚动到某个元素。在组件中创建生成器函数并通过调度的操作调用它。在组件中创建生成器函数并通过调度的操作调用它。