reactjs - 在 Formik React 表单的 handleSubmit 方法中设置 Redux State
问题描述
我想在提交 Formik 反应表单后通过 Ajax 获取的 redux 存储中设置一个变量
import React from 'react';
import {connect} from 'react-redux';
import { withFormik, Form, Field } from 'formik';
const LoginForm = ({
values
}) => {
return (
<div>
<Form className={styles.LoginForm}>
<Field className={input_classes} type="text" name="username" placeholder="username" />
<Field className={input_classes} type="password" name="password" placeholder="password" />
<button>Submit</button>
</Form>
</div>
)
}
const mapDispatchToProps = dispatch => {
return {
setData: (data) => dispatch({type: actionTypes.ADD_DATA, data: data})
}
}
const loginForm = connect(null, mapDispatchToProps)(LoginForm);
const FormikLoginForm = withFormik({
mapPropsToValues({ username, password }) {
return {
username: username || '',
password: password || '',
}
},
handleSubmit(values, props) {
//make AJAX call and set data in redux store
}
})(loginForm);
export default FormikLoginForm;
我找不到在 handleSubmit 方法中将任何数据设置到商店的方法;也就是说,如何访问返回 mapDispatchToProps 的 setData 方法?
解决方案
HOC 事务的顺序,尤其是在这种情况下(访问另一个 HOC 中的 prop) - reduxconnect
必须在withFormik
.
const FormikLoginForm = withFormik({
mapPropsToValues({ username, password }) {
return {
username: username || '',
password: password || '',
}
},
handleSubmit(values, { props } ) {
//make AJAX call and set data in redux store
props.setData( result )
}
})(LoginForm);
export default connect(null, mapDispatchToProps)(FormikLoginForm);
推荐阅读
- javascript - React Context - 设置状态然后直接引用它?
- node.js - ExpressJS - 未处理的拒绝错误:错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头
- c++ - C++ - 使用特定函数计算 x 和 y 的最终值
- package - `ERROR: EOFError: read end of file` 安装新 Julia 版本后使用包时
- python - Subprocess.Popen Stdout 等待程序完成
- gensim - FastTextKeyedVectorsvectors、vectors_vocab和vectors_ngrams实例变量的区别
- java - JAVA INSERT INTO SELECT,有可能吗?
- php - ActiveMQ - 根据客户端 ID 断开另一个客户端的任何方式?
- javascript - 从 Select 中的 onchange 事件调用 window.print() 时出错
- c++ - 给定一个 3 x 3 矩阵或任何 nxn 矩阵,为什么我的以下函数找不到对角线差异?