使用带React Fetch的POST会返回一个空对象吗?

时间:2018-01-15 15:46:32

标签: javascript node.js reactjs express

我有一个非常简单的后端服务器,内置在Node / Express中,通过

接受发布请求
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(bodyParser.json())

app.post('/auth/login', (req, res) => {
  console.log(req.body);
  res.send(req.body);
});

当我通过Postman发送一个POST时,它在主体中带有键/值,它按照预期在Postman中返回,我可以在我的NodeJS控制台中看到交换是通过console.log进行的。但是,当我使用React做同样的事情时,它只记录一个空对象。

这是我的反应:

handleSubmit(e) {
  e.preventDefault();
  const { email } = this.state;

  fetch('/api/login', {
    method: 'POST',
    headers: {
      'Content-Type':'application/json'
    },
    body: {
      "email": email
    }
  });

  console.log("EMAIL", email)
}

当用户在电子邮件中输入内容时,我会更新状态,当他们点击提交按钮时,会触发此handleSubmit()

然而输出是空的{}

我不确定我在这里做错了API不能记录状态? React记录发布到API的数据,看起来有效。

更新

以下是更新状态的代码:

 handleChange(e) {
   const email = e.target.value;

   this.setState({
     email,
   });
 }

更新,我没有使用.then()来返回数据,因此我得到了一个空对象。

1 个答案:

答案 0 :(得分:3)

fetch('/api/login', {
    method: 'POST',
    headers: {
      'Content-Type':'application/json'
    },
    body: {
      "email": email
    }
  }).then(res => console.log(res));

你需要使用.then()