Formik 没有显示在 nextjs 页面上?

Formik not displaying on a nextjs page?

我有一个“登录”组件,其中有一个 div 里面有 Formik,只有一些名字和电子邮件表单,没有错误,但 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 也出现了,它应该在其中包含登录组件。 可能是什么问题?也许我只是瞎了眼,遗漏了一些简单的东西,或者是否存在某种包装问题?

您必须 return 您的 Formik 子回调中的 JSX。

{({ values, handleChange, handleBlur, handleSubmit }) => {
    return (
        <form onSubmit={handleSubmit}>
            <!-- Rest of the form -->
        </form>
    );
}}

或 shorthand 语法:

{({ values, handleChange, handleBlur, handleSubmit }) => (
    <form onSubmit={handleSubmit}>
        <!-- Rest of the form -->
    </form>
)}