我是React的新手,所以我不知道获取数据的最佳方法。我有一个类似/country/japan
的网页网址,这是我的组件:
var Country = React.createClass({
componentDidMount: function() {
var _this = this,
country = _this.props.params.country;
Axios.get('http://URL/?search=' + country)
.then(function(result) {
_this.setState({
country: result.data[0]
});
});
},
componentWillUnmount: function() {
this.serverRequest.abort();
},
render: function() {
var country = this.state.country;
return (
<div>
<h1>{country.name}</h1>
</div>
);
}
});
我似乎无法访问国家/地区数据。这样做的正确方法是什么?你怎么会触发404?
答案 0 :(得分:1)
我想先说明一下表现形式和容器成分之间的区别。
演示组件:
容器组件:
您可以查看更多here。这将有助于您了解如何触发api调用(它应该在容器中)。
现在来看你的代码吧。我会说你的api代码移动到容器中并在容器内调用你的组件。
var CountryContainer = React.createClass({
componentDidMount: function() {
var _this = this,
country = _this.props.params.country;
axios.get('http://URL/?search=' + country)
.then(function(result) {
//200-300 response codes
//update you state here with say variable data
.catch(function(error){
//400+ response codes
}
});
componentWillUnmount: function() {
this.serverRequest.abort();
},
render: function() {
return (
<Country data={this.state.data} />
);
}
});
我建议你去参考axios文档。他们清楚地提到API调用何时失败以及如何处理它:)