简体   繁体   English

我想使用反应上下文状态管理从我的反应项目中的表单设置用户名,但它保持未定义

[英]I want to set the user name from a form in my react project with react context state management but it stays undefined

import React from "react";
import { useForm } from "react-hook-form";
import "./Home.css";
import { useStateValue } from "./StateProvider";

function Home() {
  const { register, handleSubmit } = useForm();
  const [{ user }, dispatch] = useStateValue();

  const onSubmit = (data) => {
    console.log(data);
    console.log(user);
  };

  const submitUser = (data) => dispatch({ type: "SET_USER", user: data.naam });

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <div className="home">
        <h1>Fill in your contact details.</h1>
        <div className="home_userInput">
          <div className="row">
            <div className="col-25">
              <label>name</label>
            </div>
            <div className="col-75">
              <input name="naam" type="text" ref={register}></input>
            </div>
          </div>
          <div className="row">
            <button onClick={submitUser}>Submit</button>
          </div>
        </div>
      </div>
    </form>
  );
}

export default Home;

I dont know how to get the user out from data and into userStateValue.我不知道如何将用户从数据中取出并放入 userStateValue。 If I substitute "user: data.naam" to "user: "Jimmy"" it works but I want to set the name from the data object.如果我将“user:data.naam”替换为“user:“Jimmy””,它可以工作,但我想从数据对象中设置名称。

submitUser is the callback of the onClick , so data in submitUser = (data) => dispatch({ ... is the click event and it won't hold the values you're looking for, submitUser是回调onClick ,所以datasubmitUser = (data) => dispatch({ ...click event ,它不会阻挡你正在寻找的价值,

Call it inside the onSubmit instead :onSubmit调用它:

const onSubmit = (data) => {
    console.log(data);
    console.log(user);

    submitUser(data);
  };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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