需要使用JavaScript使对象值可选
下午好, 我正在使用ReactJS构建一个web应用程序,并使用Auth0进行身份验证。 我正在使用state保存需要发送到后端以更新用户信息的数据。我需要使这两个键/值都是可选的,我应该能够只使用更新的电子邮件或昵称将数据发送到我的后端。就目前情况而言,这两者都需要。我使用Postman只向API发送一个键值,以确保它是可能的,并且能够正常工作需要使用JavaScript使对象值可选,javascript,node.js,reactjs,authentication,jsx,Javascript,Node.js,Reactjs,Authentication,Jsx,下午好, 我正在使用ReactJS构建一个web应用程序,并使用Auth0进行身份验证。 我正在使用state保存需要发送到后端以更新用户信息的数据。我需要使这两个键/值都是可选的,我应该能够只使用更新的电子邮件或昵称将数据发送到我的后端。就目前情况而言,这两者都需要。我使用Postman只向API发送一个键值,以确保它是可能的,并且能够正常工作 const[data,setData]=useState({ 昵称:'', 电子邮件:“”, }); 常量updateFunction=()=>{
const[data,setData]=useState({
昵称:'',
电子邮件:“”,
});
常量updateFunction=()=>{
试一试{
取回(`http://localhost:8080/updateuser`, {
方法:“POST”,
标题:{“内容类型”:“应用程序/json”},
正文:JSON.stringify({id,data})
})
.catch((e)=>{console.log(e)});
}捕获(e){
控制台错误(e);
}
}
setData({…data,昵称:e.target.value})}/>
setData({…数据,电子邮件:e.target.value})}/>
您可以检查对象是否包含等于空字符串的键值对,并在将其发布到api之前删除该键值,如下所示:
const updateFunction = (data) => {
for (const [key, value] of Object.entries(data)) {
if (value === "") delete data[key];
}
try {
console.log(data);
} catch (e) {
console.error(e);
}
};
附件是一个沙盒,用于查看它的运行情况:如果您只想发送其中一个值,则可以在正文中执行此操作
body: JSON.stringify(
{ name: name.trim().length > 0 ? name : undefined,
email: email.trim().length > 0 ? email : undefined
}
) .
将对象的值设置为未定义的字符串将从对象中删除整个键
现在,当您只填写了电子邮件时,上述更改已到位。你将会是公正的
{ email: .... }
名称
将自动删除。这有效,谢谢。如果您能解释一下您正在使用的语法,例如[key,value]和Object.entries。[key,value]是一种解构类型吗?没问题。以下是有关Object.entries的文档。它允许您通过对象键值对进行循环谢谢您的帮助!