Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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
Php 为什么fetch POST返回React中API调用的挂起状态_Php_Reactjs - Fatal编程技术网

Php 为什么fetch POST返回React中API调用的挂起状态

Php 为什么fetch POST返回React中API调用的挂起状态,php,reactjs,Php,Reactjs,我正在尝试创建一个“反应”按钮,以从服务器发布/检索数据。 我已经完成了发布和检索,但问题是,每当我发布时,如果我检查开发人员工具,就会显示api调用挂起。如果我刷新页面,就会得到新数据 这是我的帖子: getId = async(reaction) => { let eSlug = this.state.slug; let data = { reactiond: reaction, eSlugd: eSlug

我正在尝试创建一个“反应”按钮,以从服务器发布/检索数据。 我已经完成了发布和检索,但问题是,每当我发布时,如果我检查开发人员工具,就会显示api调用挂起。如果我刷新页面,就会得到新数据

这是我的帖子:

getId = async(reaction) => {

      let eSlug = this.state.slug;

      let data = {
          reactiond: reaction,
          eSlugd: eSlug
      }
      
        await fetch("http://localhost:9000/react/",
        {
            method: "post",
            headers: { 
              'Accept': 'application/json',
              'Content-Type': 'application/json'
            },
            body: JSON.stringify(data)
        }).then(response => response.json())
          .then(data => {
            console.log(data)
          });
  }
我的反应是:

<div className="row">
            <div className="col-all">
              <button className="emoji-static">
                <span className="emoji-like">Like</span>
                <span className="emoji-container">
                  <span className="emoji cool zoom" onClick={this.getId.bind(null,"1")}>
                    <img className="svg" src="/img/svg/cool.svg" alt="Cool" />
                    <span className="counter">{this.state.coolReaction}</span>
                  </span>
                  <span className="emoji love zoom" onClick={this.getId.bind(null,"2")}>
                    <img className="svg" src="/img/svg/love.svg" alt="Love" />
                    <span className="counter">{this.state.loveReaction}</span>
                  </span>
                  <span className="emoji laugh zoom" onClick={this.getId.bind(null,"3")}>
                    <img className="svg" src="/img/svg/laugh.svg" alt="Laugh" />
                    <span className="counter">{this.state.laughReaction}</span>
                  </span>
                  <span className="emoji sad zoom" onClick={this.getId.bind(null,"4")}>
                    <img className="svg" src="/img/svg/sad.svg" alt="Sad" />
                    <span className="counter">{this.state.sadReaction}</span>
                  </span>
                  <span className="emoji zoom" onClick={this.getId.bind(null,"5")}>
                    <img className="svg" src="/img/svg/angry.svg" alt="Angry" />
                    <span className="counter">{this.state.angryReaction}</span>
                  </span>
                </span>
              </button>
            </div>
        </div>

喜欢
{this.state.coolReaction}
{this.state.loveReaction}
{this.state.laughtreaction}
{this.state.sadReaction}
{this.state.angryReaction}
我不明白为什么它被挂起,正因为如此,我没有为console.log获得任何东西
你能给我指一下正确的方向吗?我是React的初学者,来自PHP。

我高度相信这里的错误是因为错误地使用了async/awaitpromises

履行承诺时要牢记的事项

  • 无论何时使用
    同步
    阻塞代码
    ,都要使用承诺
  • 确保同时编写
    .catch
    。然后为所有承诺编写
    方法
  • 如果要在完成所有操作后执行某项操作,请使用
    。最后使用
  • Promise对象中所有方法的返回类型,无论它们是静态方法还是原型方法,都是
    Promise。
使用Async/Await时要记住的事项

  • 异步函数返回一个承诺
  • 异步函数使用隐式承诺返回结果。即使没有显式返回
    promise
    async
    函数也会确保代码通过promise传递
  • await
    async
    函数中阻止代码执行,而
    await语句是该函数的一部分
  • await
    语句可以在一个
    async
    函数中重载

立柱是否击中控制器?控制器是否返回响应?有服务器端错误吗?Hello@Rok Sprogar,帖子会到达服务器,因为如果我刷新前端页面,我会得到到达数据库的数据输出,反应输出会增加。就好像它不在刷新,停留在等待中。没有服务器端错误。没有收到回复,Chrome中的F12表示api调用处于挂起状态。我会在POSTMAN中尝试相同的帖子,看看我是否收到了任何(奇怪的)回复…我还看到您正在发送到端口9000…所以我猜您也在通过相同的端口加载该站点?Hi Rok,node+express中的后端在端口9000上,react中的前端在3000上。谢谢您的解释,我正在尝试查看它,但很难理解,因为我来自PHP。你有一般的例子吗?不一定基于我的代码,它可能是codepen中的随机示例。我建议您可以获得一个YouTube视频,该视频教授
承诺
,也教授
异步/等待
。。。但从基本的角度来说,你需要理解的是,当你
async/await
不使用承诺,当你使用
promissions
不使用
async/await
时,在两者之间选择一个。问题是,在发布帖子时,我没有从后端返回任何内容,我已经修复了这一点,现在一切都正常。感谢您的解释,我们将在未来尝试了解更多。