gpt4 book ai didi

javascript - React JS + Fetch API 发布

转载 作者:行者123 更新时间:2023-11-30 14:31:09 24 4
gpt4 key购买 nike

我使用 fetch API 从表单发布一些数据,效果很好。

但是我遇到了一个问题,问题是当我发布数据时状态没有更新,是的,我知道我没有使用 setState() 但没有设置它。还没有。

目前我正尝试通过控制台日志记录来调试问题,结果发现正文未被使用。

提交函数:

addContact = (event) => {

event.preventDefault(); //Prevents The Default Action Of A Form


const formData = {};

/*
for(let [temp variable] in this.state.contacts) {
formData[attach temp variable] = to contacts[temp variable].value
}

*/

// BASIC TERM: For everything in the contacts config set the formData (Blank Object) equal to the identifier e.g. name, street equal to the state value. The object will then be populated
// The formData is then attached to an object named object and sent to the firebase database by attaching it to the post request
for(let formElementIdentifier in this.state.contacts) {
formData[formElementIdentifier] = this.state.contacts[formElementIdentifier].value;
}

const data = {
persons: formData
}

fetch("https://address-book-database.firebaseio.com/contact.json", {
method: "POST",
headers : {
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify(data)
})
.then((res) => {
console.log("Body Used Or Not")
console.log(res.bodyUsed)
})
.then(json => {

})
}

这是第一次使用 fetch API。我真的很困惑为什么这行不通,我们将不胜感激任何帮助。我知道链接 .then() 但我无法让它与 POST 请求一起工作。

我想做的就是设置表单中的值并将其附加到请求中,请求需要转换为 JSON,然后需要更新状态。

完整项目:https://github.com/AlexMachin1997/React-JS-Contact-Book/blob/master/src/Components/Contact/Contacts/Contacts.js

最佳答案

像下面这样使用您的提取请求。你需要使用 response.json()。它等待主体加载。

为什么 response.json 会返回一个 promise?

因为当所有 header 都到达时您会收到响应。调用 .json() 可以让您获得尚未加载的 http 响应正文的 promise

Why is the response object from JavaScript fetch API a promise?

fetch('https://address-book-database.firebaseio.com/contact.json', {
method: 'post',
headers: {
Accept: "application/json",
"Content-Type": "application/json",
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify(data)
}).then(function (response) {
return response.json(); //response.json() is resolving its promise. It waits for the body to load
}).then(function (responseData) {
//Do your logic
});

关于javascript - React JS + Fetch API 发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com