无法获取数据,React没有给出任何错误消息

时间:2018-11-15 08:00:22

标签: javascript reactjs ecmascript-6

我有这个组件:

private Node select(Node x, int k) {
    if (x == null) return null; 
    int t = size(x.right); 
    if      (t > k) return select(x.right,  k); 
    else if (t < k) return select(x.left, k-t-1); 
    else            return x; 
} 

我在另一个组件中调用它,例如:

import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { compose } from 'redux'; import { translate } from 'react-i18next'; const API = `http://accountmanagement.ng.bluemix.net/v1/accounts/${accountGuid}/traits`; class GetMFAValidation extends Component { constructor(props) { super(props); this.state = { data: '' }; } render() { return ( <div> <p>HOLA, I AM ${accountGuid}</p> </div> ); } componentDidMount() { fetch(API).then(response => response.json()).then(data => { console.log('data -->', data); this.setState({ data }); }); } } GetMFAValidation.propTypes = { accountGuid: PropTypes.string.isRequired, }; export default compose( connect( store => ({ accountGuid: store.global.accountGuid }), translate(), ), )(GetMFAValidation); 还有import GetMFAValidation from "../path"

该应用程序崩溃了,但我没有收到任何错误。

2 个答案:

答案 0 :(得分:2)

您的 API 字符串中包含一个变量:

const API = `http://accountmanagement.ng.bluemix.net/v1/accounts/${accountGuid}/traits`;

...但是在这里无法访问 accountGuid

您可以改用函数:

const getAPIUrl = (accountGuid) => 
  `http://accountmanagement.ng.bluemix.net/v1/accounts/${accountGuid}/traits`;

然后在使用时从道具中传入 accountGuid

componentDidMount() {
  const APIUrl = getAPIUrl(this.props.accountGuid)
  fetch(APIUrl).then(response => response.json()).then(data => {
    console.log('data -->', data);
    this.setState({ data });
  });
}

我希望这会有所帮助。

答案 1 :(得分:1)

在获取方法中,尝试在此之后添加一个catch并打印错误,如果是由于获取原因,您的程序仍然可以运行,并且会收到错误消息

fetch(API).then(response => response.json()).then(data => {
    console.log('data -->', data);
    this.setState({ data });
  })
  .catch(error => console.log(error));