【发布时间】:2018-08-29 09:23:10
【问题描述】:
我从未使用过 REST api,并且无法弄清楚如何使用返回的 result.data 设置变量。我将 Meteor 与 ReactJs 一起使用,并且 console.log('countries', countries) 正在返回 undefined 而 console.log(result.data) 正在返回国家数据。
export default class CountryPage extends React.Component {
constructor(props) {
super(props);
}
render() {
const countries = HTTP.get('https://restcountries.eu/rest/v2/all', (err, result) => {
console.log(result.data);
return result.data;
});
console.log('countries', countries);
return (
<div>
<Input type="select" name="countrySelect" id="countrySelect">
{countries.map(country => (
<option>{country.name}</option>
))}
</Input>
</div>
);
}
}
【问题讨论】:
-
(注:未验证)据我所知,Wesgur 提供的答案是正确的,因为您没有正确处理 AJAX。但是,应该注意
render可能不适合拨打此类电话。将 AJAX 调用置于componentDidMount并使用结果设置状态 -
不推荐使用 componentDidMount 吗? @vapurrmaid
-
我以为是
componentWillMount,但我有一段时间没有使用 React。 The documentation 似乎也表明了这一点:UNSAFE_componentWillMount(),虽然正常显示componentDidMount- 所以我认为它仍然可以安全使用