【发布时间】:2020-02-06 09:51:45
【问题描述】:
我有一个动作
export const saveNewTask = (taskName, taskDescription) => async dispatch => {
console.log(taskName, taskDescription);
const res = await axios.post('/api/add-new-task', {
taskName,
taskDescription
});
console.log(res);
dispatch({ type: SAVE_TASK, payload: res.data });
};
包含一个子容器的父容器,它是一个 Formik 表单,应该允许子组件通过上述操作将 Formik 表单内容保存到数据库。
import { saveNewTask } from '../actions/index';
class ClientDashboard extends React.Component {
render() {
return <NewTask saveNewTask={saveNewTask()} />;
}
}
export default connect(null, { saveNewTask })(Container);
NewTask.js 子组件,对 Redux 一无所知:
function NewTask(props) {
const formik = useFormik({
initialValues: {
taskName: '',
taskDescription: ''
},
onSubmit: values => {
// alert(JSON.stringify(values, null, 2));
props.saveNewTask(values.taskName, values.taskDescription);
}
});
...
}
但该操作永远不会获得我试图通过 Formik 组件传递的参数(注释的警报行完美地显示了这两个值)并说 taskName 和 taskDescription 都未定义。动作最后一行的调度也说
Uncaught (in promise) TypeError: dispatch is not a function at Object.saveNewTask
我认为这更像是一个语法错误,但任何帮助都将不胜感激。
【问题讨论】:
标签: javascript reactjs react-redux formik