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>
)}
我有一个“登录”组件,其中有一个 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>
)}