在发送到服务器之前如何清除React中的空表单输入状态?
例如,在下面的表单中,如果没有填写user.name
,则发送给服务器的对象为:
{ age: "19" }
注意:我当然可以在submitHandler
中手动删除空属性,但是有没有其他不需要我手动删除的方法?
const UserAdd = () => {
const [user, setUser] = useState({
name: "",
age: ""
});
const inputChangeHandler = (e) => {
setUser({ ...user, [e.target.name]: e.target.value })
}
const submitHandler = (e) => {
e.preventDefault();
// Start Solution
const userWithoutEmptyProperties = {};
for(const key in user) {
if(user[key]) {
userWithoutEmptyProperties[key] = user[key];
}
}
// End Solution
// send "userWithoutEmptyProperties" to server
}
return (
<form onSubmit={submitHandler} >
<input type="text" name="name" onChange={inputChangeHandler} />
<input type="text" name="age" onChange={inputChangeHandler} />
<button type="submit">Add</button>
</form>
)
}
Object.keys(user).forEach((item) => !user[item] && delete user[item);
您可以使用一行代码:
let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v));
详细说明:从Javascript对象中删除空白属性