【发布时间】:2020-01-27 22:07:16
【问题描述】:
当用户提交表单时,我希望他们收到多个模式的提示。
基本结构: 我的应用程序设置为显示一个模态,您所要做的就是调度一个动作,将模态主体作为动作的有效负载。
dispatch({type: SHOW_MODAL, payload: <MyModal />})
当用户提交表单时,saga 会发送一个动作,所以现在我们处于 saga 领域。我想做的是让用户在表单实际提交到后端之前依次显示几个模式。
// mySaga.js
function* submitForm() {
// show a modal
// then show another modal
// then submit the form
}
这样做的最佳方法是什么?对我来说最有意义的是使用 Promise。
// mySaga.js
function* submitForm() {
yield call(() => {
new Promise( resolve => {
yield put({type: SHOW_MODAL, payload: <MyModal onClick={resolve} />})
})
})
...
// add as many more modals as I'd like
...
yield call(myApiCall)
}
上面的问题是您不能在该 promise 函数中使用 yield,因为它不是生成器。我所需要的只是一种在 saga 中正常调度动作的方法,但在整个互联网上看起来一点都不简单。
我是否错过了有关 sagas 的内容?最好的方法是什么?
【问题讨论】:
标签: reactjs redux redux-saga