如何从外部sagas.js调用saga?

tweetypi

我有一个sagas.jscontainers/App/sagas.js其中包含一个登录的传奇,我试图从登录弹出它也有自己的称呼它sagas.js (components/LoginPopup/sagas.js),并追平了以下解决方案一起:

// containers/App/saga.js:

export const LOGIN = 'FUNAPP/App/LOGIN';

export const requestLogin = (payload: Object) => ({
  type: LOGIN + REQUESTED,
  payload,
});


export function* LoginRequest(payload) {
  window.alert("LOGIN REQUEST ");
  window.alert(payload)
}

export default function*(): Saga<void> {
  yield [
    takeLatest(LOGIN + REQUESTED, LoginRequest)
  ];
}

// components/LoginPopup/saga.js:

import { requestLogin, LoginRequest, LOGIN } from '../../containers/App/sagas';
export default function* (): Saga<void> {
    yield [
        takeLatest(LOGIN + REQUESTED, LoginRequest)
    ]
}

// components/LoginPopup/index.js
import { requestLogin } from '../../containers/App/sagas'

const mapStateToProps = state => ({
});

const mapDispatchToProps = dispatch => ({
    requestLogin: (payload) => dispatch(requestLogin(payload))
});

export default compose(
    injectSagas({ key: 'app', saga, reducer }),
    connect(mapStateToProps, mapDispatchToProps)
)(LoginPopup);

这感觉像是一种肮脏的工作方式,我希望我需要做的就是导入requestLogin功能,一切都将正常工作,或者至少比将所有相关功能导出到LoginPopup那里传奇更干净

亚历山大·维塔诺夫(Alexander Vitanov)

据我了解,这可能是您要寻找的东西:

// components/LoginPopup/saga.js:

import { all, call } from 'redux-saga/effects'
import loginRquest from '../../containers/App/sagas';

export default function* (): Saga<void> {
    yield all([
       call(loginRquest),
    ])
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章