Formik 未显示在 nextjs 页面上?

时间:2021-03-04 12:27:04

标签: html reactjs next.js formik

我有一个“登录”组件,里面有一个带有 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 也存在。 可能是什么问题?也许我只是瞎了眼,遗漏了一些简单的东西,还是有某种包装问题?

1 个答案:

答案 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>
)}
相关问题