【问题标题】:Displaying API calls from nodeJS inside reactJS component在 reactJS 组件中显示来自 nodeJS 的 API 调用
【发布时间】:2018-08-17 03:49:01
【问题描述】:

所以我正在制作一个应用程序,我必须在其中创建一个 nodeJS 服务器,并且我必须在客户端 (reactJS) 上显示 API 调用。但是,当我调用 fetch() 方法时,客户端不会显示任何内容,而只会在终端的服务器端显示任何内容。我可能不知道如何正确地做到这一点,所以我只是想知道你们中是否有人知道我做错了什么,我只是想学习,仅此而已。这是我的服务器端的一小部分:

const express = require('express');
const router = express.Router();
var key = "v2xcfdfa76db9f173028d97859c47a8ce0554321029a3fbfc06a26f81b1655bd3d9";
var BitGo = require('bitgo');
var client = new BitGo.BitGo({ env: 'test', accessToken: key });

router.get('/user/me', (req, res, next) => {
client.me({}, function callback(err, user) {
  if (err) {
  console.dir(err);
}
console.dir(user);
  });
});

module.exports = router;

这是客户端:

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component {
constructor(props) {
super(props);
this.state = {
  data: ""
    }
 }

 componentDidMount() {
 return fetch('/user/me')
.then((response)=> response.json())
.then((responseJson)=>{
  this.setState({
    data: responseJson.data
  });
})
 }
  render() {
  return (
  <div className="App">
    <header className="App-header">
      <img src={logo} className="App-logo" alt="logo" />
      <h1 className="App-title">Welcome to React</h1>
    </header>
    <p className="App-intro">
      Data from our API: <b>{this.state.data}</b>
    </p>
  </div>
   );
  }
}

export default App;

【问题讨论】:

  • 您遇到错误了吗?如果您遇到错误,请分享。
  • 当你这样做时会发生什么:.then((response)=&gt; {console.log(response) return response.json())} response 中显示了什么?请对responseJson做同样的事情
  • @DrunkDevKek 嘿,我试着做你发布的完全相同的事情,但我在浏览器中看不到 console.log 的输出......
  • @DrunkDevKek 'response' 未定义为 no-undef。如果我在 componentDidMount 方法的末尾打印它,这就是我得到的。

标签: node.js reactjs api


【解决方案1】:

你实际上并没有从服务器返回任何东西......或者看起来你给我们的代码有限。

router.get('/user/me', (req, res, next) => {
  client.me({}, function callback(err, user) {
    if (err) {
      console.dir(err);
      res.status(400).send(err)
    }

    console.dir(user);
    res.send({ data: user })
  });
});

我假设 user 是 JSON 可序列化的(并且它是您希望从服务器返回的数据)。

【讨论】:

  • 嘿,你说得对。我希望用户从服务器返回。但是我只是尝试使用您提供的代码,客户端没有任何变化。
  • 我已经更新了我的代码。你是从responseJson.data 拉出来的,所以我调整了响应,将user 放入data
  • 我认为我们已经接近了,所以我刚刚收到一条错误消息:对象作为 React 子级无效。 this.setState({ 数据: responseJson.data });我相信问题就在这里
  • 嗯...当然。所以user 是一个对象...更改Data from our API: &lt;b&gt;{this.state.data}&lt;/b&gt; 以提取您想要的数据(即{this.state.data.name} 如果user 具有name 属性。
  • 泰勒,如果你最终来到哥本哈根,请给我发消息,因为你要从我这里得到一大杯酒。非常感谢您解释一切并帮助我,不胜感激! :)
猜你喜欢
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多