我有一个“登录”组件,里面有一个带有 Formik 的 div,只有一些姓氏和电子邮件表单,没有错误,但是 Formik 组件根本没有显示,它只是一个空的 div ,其他任何东西都可以完美运行。这是一段代码,也许我遗漏了什么:
import Link from "next/link";
import Head from "next/head";
import styles from "../styles/Home.module.css";
import Login from "../components/Login";
export default function Home() {
return (
<>
<Head>
<title>login page</title>
</Head>
<h1>hello</h1>
<Login />
</>
);
}
以及登录组件本身:
import { Formik } from "formik";
import { TextField } from "@material-ui/core";
const Login = () => {
return (
<div>
<Formik
initialValues={{ firstName: "", lastName: "", email: "" }}
onSubmit={data => {
console.log(data);
}}
>
{({ values, handleChange, handleBlur, handleSubmit }) => {
<form onSubmit={handleSubmit}>
<TextField
onChange={handleChange}
onBlur={handleBlur}
value={values.firstName}
/>
<TextField
onChange={handleChange}
onBlur={handleBlur}
value={values.lastName}
/>
<TextField
onChange={handleChange}
onBlur={handleBlur}
value={values.email}
/>
</form>;
}}
</Formik>
</div>
);
};
export default Login;
所以 <h1>hello</h1>
出现在页面上,并且应该在其中包含登录组件的空 div 也存在。
可能是什么问题?也许我只是瞎了眼,遗漏了一些简单的东西,还是有某种包装问题?
答案 0 :(得分:2)
您必须在 Formik
子回调中返回 JSX。
{({ values, handleChange, handleBlur, handleSubmit }) => {
return (
<form onSubmit={handleSubmit}>
<!-- Rest of the form -->
</form>
);
}}
或者简写语法:
{({ values, handleChange, handleBlur, handleSubmit }) => (
<form onSubmit={handleSubmit}>
<!-- Rest of the form -->
</form>
)}