Reactjs 使用useState一次更新上的状态值
下面的代码给了我一个警告: 组件正在将受控输入更改为非受控输入。这可能是由值从已定义更改为未定义引起的,这是不应该发生的。在组件的使用寿命内,决定使用受控或非受控输入元件。 当我更改密码或用户名时 我不知道为什么会出现这个错误。 有人能告诉我为什么我会犯这个错误吗Reactjs 使用useState一次更新上的状态值,reactjs,react-hooks,use-state,Reactjs,React Hooks,Use State,下面的代码给了我一个警告: 组件正在将受控输入更改为非受控输入。这可能是由值从已定义更改为未定义引起的,这是不应该发生的。在组件的使用寿命内,决定使用受控或非受控输入元件。 当我更改密码或用户名时 我不知道为什么会出现这个错误。 有人能告诉我为什么我会犯这个错误吗 import React, { useState } from "react"; const Login = () => { const [login, setLogin] = useState({ u
import React, { useState } from "react";
const Login = () => {
const [login, setLogin] = useState({ user: "", password: "" });
const handleChange = (e) => {
setLogin({ [e.target.name]: e.target.value });
};
return (
<div>
User Name{" "}
<input
onChange={handleChange}
type="text"
name="username"
value={login.user}
/>
Password{" "}
<input
onChange={handleChange}
type="password"
name="password"
value={login.password}
/>
<button>Login</button>
</div>
);
};
import React,{useState}来自“React”;
常量登录=()=>{
const[login,setLogin]=useState({user:,password:});
常数handleChange=(e)=>{
setLogin({[e.target.name]:e.target.value});
};
返回(
用户名{“”}
密码{“”}
登录
);
};
与类组件的setState()
不同,使用useState()
设置功能组件中的状态不会将更新对象与以前的状态合并。使用useState()
设置状态替换上一个状态。这就是为什么useState()
中的状态可以是数组、对象或原语
在本例中,当您输入state-setLogin({[e.target.name]:e.target.value})时代码>,则替换整个状态,并实际上删除另一个字段的值。您应该分散登录状态的上一个值,并仅覆盖您正在更改的字段的值
const{useState}=React;
常量登录=()=>{
const[login,setLogin]=useState({user:,password:});
常数handleChange=(e)=>{
setLogin(login=>({…login[e.target.name]:e.target.value});
};
返回(
用户名{“”}
密码{“”}
登录
);
};
ReactDOM.render(
,
根
);代码>
与类组件的setState()
不同,使用useState()
设置功能组件中的状态不会将更新对象与以前的状态合并。使用useState()
设置状态替换上一个状态。这就是为什么useState()
中的状态可以是数组、对象或原语
在本例中,当您输入state-setLogin({[e.target.name]:e.target.value})时代码>,则替换整个状态,并实际上删除另一个字段的值。您应该分散登录状态的上一个值,并仅覆盖您正在更改的字段的值
const{useState}=React;
常量登录=()=>{
const[login,setLogin]=useState({user:,password:});
常数handleChange=(e)=>{
setLogin(login=>({…login[e.target.name]:e.target.value});
};
返回(
用户名{“”}
密码{“”}
登录
);
};
ReactDOM.render(
,
根
);代码>
是啊,我的错……我现在就去。谢谢,是的,我的错…我现在就去。谢谢Ori