reactjs 在Next.js中创建表单时,我应该使用useState作为值吗?

jbose2ul  于 2023-11-18  发布在  React
关注(0)|答案(1)|浏览(103)
'use client';

import { useState } from 'react';

 export default function Page() {
   const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
     e.preventDefault();
     console.log(e.currentTarget.email.value);
     console.log(e.currentTarget.password.value);
   };
   return (
     <form onSubmit={handleSubmit}>
       <input type="text" name="email" />
       <input type="password" name="password" />
       <button type="submit">login</button>
     </form>
   );
 }

 /////////////////////////////////
export default function Page() {
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
    e.preventDefault();
    console.log(email);
    console.log(password);
  };

  return (
    <form onSubmit={handleSubmit}>
      <input
        type="text"
        name="email"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
      />
      <input
        type="password"
        name="password"
        value={password}
        onChange={(e) => setPassword(e.target.value)}
      />
      <button type="submit">login</button>
    </form>
  );
}

字符串
上面的代码没有使用useState,而下面的代码使用useState指定值,使用onChange指定值。两者之间有什么区别,哪一个是更正确的代码?到目前为止我只写了下面的代码,但我看到了一些代码看起来像上面的代码。请告诉我两者之间的区别,哪一个是更正确的代码。

zazmityj

zazmityj1#

您要问的问题是:我应该使用受控状态还是不受控状态?
这是React术语的名称。
这两个代码示例都非常好,非常干净,要问你自己的问题是;我想对提交前或提交后的值做些什么?
如果不是,您可以从事件中查找值并传递它们,或者您可以控制输入字段并在本地存储所述状态,然后在提交时访问它。
我希望这能详细说明您的问题,如果有任何不清楚的地方,请随时提出后续问题。

相关问题