首页 > 解决方案 > 为什么我的网站在输入文本时会重新渲染多次?

问题描述

我正在构建一个反应应用程序,用户在其中输入他们的姓名,但是每当我在输入字段中输入任何单词时,它都会重新呈现。我已经尝试过useCallbackmemo但它没有用。

上下文 api 用于传递名称。

这是我的代码

import React, { useState, useContext, memo, useRef } from "react";
import "./login.css";
import { AuthContext } from "./context";

const Login = () => {
  const renders = useRef(0);
  const [name, setName] = useState("");
  
   const {
     authContext: { logins },
   } = useContext(AuthContext);

  
  const inputEvent = React.useCallback(
    (e) => {
      e.preventDefault();
      setName(e.target.value);
    },
    [setName]
  );

   const buttonClicked = () => {
       console.log(data);
       if (name.length > 0) {
         logins(name);
         localStorage.setItem("user", name);
       } else {
         alert("Please enter your name");
       }
     };
  return (
    <>
      <div className="login">
        <h2 style={{ textAlign: "center" }}>Coupon Collector</h2>
        <form className="nameField">
          <input
            className="inputField"
            type="text"
            placeholder="First Name"
            name="name"
            value={name}
            onChange={inputEvent}
          />
        </form>
        <div>renders {renders.current++}</div>
        <div className="buttonDiv">
           <button onClick={buttonClicked} className="button">
            Let's Go
          </button> 
        </div>
      </div>
    </>
  );
};

export default Login;

标签: reactjsformsuse-state

解决方案


推荐阅读