Javascript e、 当i';我正在使用设置状态
我将函数传递给的元素是处理值并填充父组件中的状态 例如:用户类型密码。我希望用户对象保持不变,但用户必须更改Javascript e、 当i';我正在使用设置状态,javascript,reactjs,Javascript,Reactjs,我将函数传递给的元素是处理值并填充父组件中的状态 例如:用户类型密码。我希望用户对象保持不变,但用户必须更改 I want to change my state, the user properties, when the you change the field on the form I want it to change the proper value on user. 状态={ 报名:对, 用户:{ 名称:“”, 密码:“”, 电子邮件:“”, 用户名:“” } } handleCh
I want to change my state, the user properties, when the you change the field on the form I want it to change the proper value on user.
状态={
报名:对,
用户:{
名称:“”,
密码:“”,
电子邮件:“”,
用户名:“”
}
}
handleChange=e=>{
this.setState(prevState=>({
用户:{
…prevState.user,
[e.target.name]:e.target.value
}
}
));
}
导出默认函数SignupForm({handleSignup,handleChange}){
返回(
地籍东南段
福托斯·维迪奥斯·多斯修斯
朋友们。
地籍测量
)
}
我得到一个错误:e.target为null 您应该将值保存到另一个变量,或者使用
e.persist()
:
这是因为在React中,出于性能原因而使用。从文档的部分:
事件
已合并。这意味着调用事件回调后,SyntheticEvent
对象将被重用,所有属性都将为空。这是出于性能原因。因此,您不能以异步方式访问事件
您应该将该值保存到另一个变量,或者使用
e.persist()
:
这是因为在React中,出于性能原因而使用。从文档的部分:
事件
已合并。这意味着调用事件回调后,SyntheticEvent
对象将被重用,所有属性都将为空。这是出于性能原因。因此,您不能以异步方式访问事件
您是否可以更新代码,以显示在哪里添加句柄更改列表?这是否回答了您的问题?您是否可以更新代码,以显示在哪里添加句柄更改列表?这是否回答了您的问题?我忘了将事件目标的名称也保存到变量中。现在试试?我忘了将事件目标的名称也保存到变量中。现在试试?
state = {
signUp: true,
user:{
name: '',
password: '',
email: '',
userName: ''
}
}
handleChange = e =>{
this.setState(prevState => ({
user: {
...prevState.user,
[e.target.name] : e.target.value
}
}
));
}
export default function SignupForm({handleSignup, handleChange}) {
return (
<div>
<div className='login-page__main__cadastro'>
<h4>
Cadastre-se para ver<span className='br'><br></br></span> fotos e vídeos dos seus <span className='br'><br></br></span> amigos.
</h4>
<form className='login-page__main__cadastro__form'>
<input className='form-cadastro-item' onChange={handleChange} name='email' type='email' placeholder='email'></input>
<input className='form-cadastro-item' onChange={handleChange} name='name' type='text' placeholder='Nome completo'></input>
<input className='form-cadastro-item' onChange={handleChange} name='userName' type='text' placeholder='Nome de usuário'></input>
<input className='form-cadastro-item' onChange={handleChange} name='password' type='password' placeholder='Senha'></input>
<button onClick={handleSignup} className='btn-primary'>
Cadastrar-se
</button>
</form>
</div>
</div>
)
}
handleChange = e =>{
let myName = e.target.name;
let myValue = e.target.value;
this.setState(prevState => ({
user: {
...prevState.user,
[myName] : myValue
}
}));
}