【发布时间】:2020-08-28 23:07:37
【问题描述】:
所以我有 3 个输入字段,一个用于姓名、电子邮件和密码。电子邮件和密码输入字段工作正常,但名称输入字段不允许我输入任何内容。我将输入字段的值设置为来自用户,因此它会自动填充字段。这是我的代码
import React, {useState, useEffect} from 'react';
import {useParams} from 'react-router-dom';
import {connect} from 'react-redux';
import {editUserData, fetchUserData, deleteProfile} from '../actions/index';
const EditUser = props => {
const [user, setUser] = useState({name: '', email: '', password: ''})
const params = useParams();
const editUser = e => {
e.preventDefault();
props.editUserData(params, user);
}
const handleChanges = e => {
e.persist();
setUser({...user, [e.target.name]: e.target.value});
}
useEffect(() => {
props.fetchUserData(params, setUser);
}, [])
const deleteOnClick = () => {
props.deleteProfile(params)
}
return (
<>
<form className='editUserForm' onSubmit={editUser}>
<h3>Edit Profile !</h3>
<div>Name</div>
<input className='editInput' type='text' name='name' value={`${user.firstName} ${user.lastName}`} onChange={handleChanges} />
<div>Email</div>
<input className='editInput' type='text' name='email' value={user.email} onChange={handleChanges} />
<div>Password</div>
<input className='editInput' type='text' name='password' value={user.password} onChange={handleChanges} />
<button className='submitButton'>Submit</button>
</form>
<div className='deleteProfile'>
<button className='deleteProfileButton' onClick={deleteOnClick}>Delete Profile</button>
</div>
</>
)
}
const mapStateToProps = state => {
return {
users: [],
user: {},
registerSuccessMessage: '',
user_stories: {},
isLoading: false,
error: null
}
}
export default connect(mapStateToProps, {editUserData, fetchUserData, deleteProfile})(EditUser);
编辑(根据@Boussadjra 的建议)
这是 props.fetchUserData 之后的状态。 -- 其中 setUser 是 -- 这就是我向 ${user.firstName} ${user.lastName}
输入值的原因【问题讨论】:
-
控制台有错误吗?
-
name 字段的值静态设置为 first + last name,但这些变量不受 onChange 回调的影响。
-
控制台中没有错误。我应该为名称字段单独创建一个 onChange 吗? @numbers1311407 感谢您的帮助
-
这取决于你想要做什么。一个字段中的名字和姓氏总是容易出错的设计(如果他们是“初级”或输入他们中间的首字母怎么办)。我不知道您的要求,但我可能会将其保留为一个“名称”字段(并可能稍后尝试解析名称)或将其拆分为多个字段。
-
是的,我可以单独创建一个名字和姓氏字段。再次感谢您的帮助
标签: javascript reactjs redux input-field