我有这个组件:
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"
该应用程序崩溃了,但我没有收到任何错误。
答案 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));