Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要使用JavaScript使对象值可选_Javascript_Node.js_Reactjs_Authentication_Jsx - Fatal编程技术网

需要使用JavaScript使对象值可选

需要使用JavaScript使对象值可选,javascript,node.js,reactjs,authentication,jsx,Javascript,Node.js,Reactjs,Authentication,Jsx,下午好, 我正在使用ReactJS构建一个web应用程序,并使用Auth0进行身份验证。 我正在使用state保存需要发送到后端以更新用户信息的数据。我需要使这两个键/值都是可选的,我应该能够只使用更新的电子邮件或昵称将数据发送到我的后端。就目前情况而言,这两者都需要。我使用Postman只向API发送一个键值,以确保它是可能的,并且能够正常工作 const[data,setData]=useState({ 昵称:'', 电子邮件:“”, }); 常量updateFunction=()=>{

下午好, 我正在使用ReactJS构建一个web应用程序,并使用Auth0进行身份验证。 我正在使用state保存需要发送到后端以更新用户信息的数据。我需要使这两个键/值都是可选的,我应该能够只使用更新的电子邮件或昵称将数据发送到我的后端。就目前情况而言,这两者都需要。我使用Postman只向API发送一个键值,以确保它是可能的,并且能够正常工作

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的文档。它允许您通过对象键值对进行循环谢谢您的帮助!