- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 redux-form 编写 React/Redux 应用程序和 redux-api-middleware ,并且我在将 redux-form 的 onSubmit
函数与 RSAA 生命周期集成时遇到了问题。
redux-form 文档说 onSubmit
处理程序 should return一个 promise 。在对 Promise 调用 resolve
之前,表单的 submitting
属性将为 true
。
但是,在此应用程序中,我的 API 调用当前不使用 promise (例如通过 fetch
)。我通过调度 [CALL_API]
RSAA 操作和 reducing redux-api-middleware's response actions. 来进行 API 调用
class MyReduxFormContainer extends Component {
render() {
return (
<MyReduxForm submit={this.props.submit} />
)
}
}
const mapDispatchToProps = (dispatch) => {
return {
submit: function(values, dispatch) {
dispatch({
[CALL_API]: {
method: 'PATCH',
types: [
{
type: 'REQUEST',
endpoint: '...',
body: JSON.stringify(values)
},
'SUCCESS',
'FAILURE'
]
}
});
// Problem: redux-api-middleware-style API calls normally don't leverage promises.
// Out of the box, this library doesn't offer a promise to return.
}
}
};
export default connect(
// ...
mapDispatchToProps
)(MyReduxFormContainer)
我可以通过payload
RSAA回调传递一个 promise ,然后它可以在API响应后解析/拒绝该 promise ,但这似乎违反了< em>“ Action 创建者不应该引起副作用。”承认 redux-api-middleware 似乎违反了这条规则。
理论上我可以在 onSubmit
处理程序中使用 fetch
,而不是 redux-api-middleware,但这不仅仅是这是一个让步,这使得我的 API 交互在应用程序中不一致,而且还存在重复我所参与的任何 API 中间件事件的风险,例如设置默认 header 、去驼峰化/驼峰化负载等。
有人有一起使用 redux-form 和 redux-api-middleware 的经验吗?
如果只是 redux-api-middleware,我本希望在减少 ACTION_TYPE_ 时通过更改表单的状态来简单地更改表单的
操作类型。但直接从 reducer 修改表单状态似乎是不标准的并且存在潜在风险。示例 redux-form 实现似乎强调 redux-form 状态应该是透明的/只能间接操纵。submitting
属性[REQUEST|SUCCESS|FAILURE]
任何想法/指示将不胜感激!
redux-api-中间件:
redux 形式:
最佳答案
最近我发现了相当优雅和通用的方式来结合它。 Here is article with explanation
export const formToApiAdapter = (dispatch, actionCreator, formatErrors) => (
(...args) => (
new Promise((resolve, reject) => (
dispatch(actionCreator(...args)).then(
(response) => {
if (response.error) {
return reject(formatErrors(response));
}
return resolve(response);
}
)
))
)
);
关于reactjs - 如何将 redux-form 的 onSubmit 与 redux-api-middleware 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38748404/
我是一名优秀的程序员,十分优秀!