如何正确使用fetch?

时间:2017-07-19 08:03:23

标签: reactjs react-native login fetch fetch-api

我正在处理我的应用程序。我正在尝试使用fetch登录页面,但我真的不明白如何使用fetch甚至阅读一些代码示例。有人可以帮助我吗?

例如,我必须使用这些信息登录我的服务器。 用户名:“user” 密码:“1234”

然后我希望服务器返回登录成功与否,如果登录成功则返回令牌

我尝试使用此代码

render() {
return (
  fetch('mysite', {
    method: 'POST',
    body: JSON.stringify({
      username: "user",
      password: "1234",
    })
  })
  .then((response) => response.json())
  .then((responseJson) => { return responseJson.success; })
  .catch((error) => {
    console.error(error); })
);
}

我不知道如何返回成功和令牌信息。 这个抓取是否有标题?其实我不知道如何放置这段代码。在渲染部分的回报中使用它是真的吗?

感谢您的推荐。

2 个答案:

答案 0 :(得分:2)

您不应该在render()函数中调用fetch函数,当发生由props或state更改引起的更新时,将调用此render函数。如果你这样做,一次又一次地会多次调用获取请求。正确的工作流程如下:

enter image description here

因此你应该将你的获取结果保持在一个状态,然后在渲染函数中渲染该状态,伪代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("DistMatrix")) Is Nothing Then
    Dim out1() As Double
    out1 = OutStat(bucket(Target), Range("RegScale"))
    FwdOut = outright(bucket(Target), Range("RegScale"))
    Call NewScatter(FwdOut, out1)
End If
End Sub

答案 1 :(得分:1)

获取请求的初始响应是'Response'对象,请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Response,也许您对Response.headers,Response.ok,Response.status或Response.statusText字段感兴趣?

您可以在第一个.then回调函数中访问响应的字段。在您的示例中,您只是调用'response.json()',它返回另一个promise,当在第二个.then回调中解析时,这将导致从响应对象的JSON响应体中解析对象。在您的示例中,您将从JSON对象返回“success”属性,这是否在JSON响应中是预期的?

MDN在这里使用fetch有一些很好的例子:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch