简体   繁体   中英

How to get form input value in Reactjs

I am working on Reactjs and using nextjs framework. Right now I have a form and want to get the input type text value am getting following error on my screen

TypeError: Cannot read property 'useState' of null

Here is my current code:

<form onSubmit="{check_login}">

  <div className="form-group">
    <label>Username or email *</label>
    <input
      type="text"
      name="email"
      className="form-control p_input"
      onChange="{handleEmail}"
      value="{state.email}"
    />
  </div>

  <div className="text-center">
    <button
      type="submit"
      className="btn btn-primary btn-block enter-btn"
    >Login</button>
  </div>
</form>

And for get value I am using following code:

const [state, setState] = useState({ email: "", password: "" });

const handleEmail = (e: any) => {
  const value = e.target.value;
  setState({
    ...state,
    [e.target.name]: value,
  });
};

const check_login = (e: any) => {
  e.preventDefault();
  const email = state.email;
  alert("email is " + email);
};

How do I fix this error?

Your code should work, just add import { useState } from "react";

first you need add import { useState } from "react"; then your value="{state.email}" is not correct, JSX use value={state.email} , and the same for other parts

I think you're doing it wrong. Don't make an object inside the useState() instead, separate out the email and the password and make separate useState() for them. like:-

const [email, setEmail] = useState("");
const [password, setPassword] = useState("");

I have made a working example which might help you get a little bit more clarity on the topic. You can check out the CodeSandbox Here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM