gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:10:12 27 4
gpt4 key购买 nike

我在 containers/App/sagas.js 中有一个 sagas.js,它包含一个登录 saga,我试图从一个登录弹出窗口调用它,它也有自己的 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 saga 中。

最佳答案

据我了解,您可能正在寻找以下内容:

// 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),
])
}

关于javascript - 如何从外部 sagas.js 调用 saga?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50548987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com