javascript 状态未在NextJ最新版本中更新

fkvaft9z  于 2023-10-14  发布在  Java
关注(0)|答案(1)|浏览(81)
"use client";
import { useState , useEffect } from "react";

import React from 'react'

function page() {

  const [username, setUsername] = useState("");
  const [email, setEmail] = useState("");
  const [disable,setDisable] = useState(true);

  useEffect(()=>{
    if(username.length>0 && email.length>0){
       setDisable(false);
    }else{
       setDisable(true)
    }
  },[username,email])

  const handleSubmit = () =>{
     
  }
   
  return (
    
    <>
    <label htmlFor="name" >Name</label>
    <hr />
    <input type="text" name="name" value = {username} className="text-black" 
     onChange={(e)=>{
        setUsername(e.target.value);
     }}
    /> <hr />
        <label htmlFor="email" >Email</label> <hr />
    <input type="text" name="email" value = {email}  className="text-black" 
     onChange={(e)=>{
        setEmail( e.target.value)
     }}
    /> <hr />
    <button onClick={handleSubmit} disabled={disable}>Submit</button>
    </>
  )
}

export default page

状态没有得到更新在最新的下一个版本,有人能告诉我我错过了什么??
这是app/page.tsx,因为它使用的是useState,所以我这样更新了它,请纠正我。

ljsrvy3e

ljsrvy3e1#

在你的代码中有几件事需要改变:

  • 组件名称应始终以Page为单位,因此应该是page,而不是page
  • 你不需要在这里使用useEffect,因为usernameemail是状态值,你可以创建一个新的const disableSubmit = !username.length || !email.length;disableSubmit值将在usernameemail值更改时更改

检查这个codesandbox示例

相关问题