/*
react獲取服務器APi接口的數據:
react中沒有提供專門的請求數據的模塊。但是可以使用任何第三方請求數據模塊實現請求數據
1、axios https://github.com/axios/axios axios的作者覺得jsonp不太友好,推薦用CORS方式更為干凈(后端運行跨域)
1、安裝axios模塊npm install axios --save / npm install axios --save
2、在哪里使用就在哪里引入import axios from 'axios'
3、看文檔使用
var api='http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20';
axios.get(api)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
2、fetch-jsonp https://github.com/camsong/fetch-jsonp
1、安裝 npm install fetch-jsonp --save
2、import fetchJsonp from 'fetch-jsonp'
3、看文檔使用
fetchJsonp('/users.jsonp')
.then(function(response) {
return response.json()
}).then(function(json) {
console.log('parsed json', json)
}).catch(function(ex) {
console.log('parsing failed', ex)
})
3、其他請求數據的方法也可以...自己封裝模塊用原生js實現數據請求也可以...
遠程測試API接口:
get請求:
http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20
jsonp請求地址:
http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&callback=?
*/
import React, { Component } from 'react';
import '../assets/css/index.css';
import Axios from './Axios';
import FetchJsonp from './FetchJsonp'
class Home extends Component {
constructor(props){
super(props);
this.state={
title:'首頁組件'
}
}
render() {
return (
<div>
<Axios />
<br />
<FetchJsonp />
</div>
);
}
}
export default Home;
import React, { Component } from 'react';
import axios from 'axios';
class Axios extends Component {
constructor(props) {
super(props);
this.state = {
list:[]
};
}
getData=()=>{
//通過axios獲取服務器數據
var api='http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20'; //接口后台允許了跨域
axios.get(api)
.then((response)=> {
console.log(response.data.result);
//用到this要注意this指向
this.setState({
list:response.data.result
})
})
.catch(function (error) {
console.log(error);
});
}
render() {
return (
<div>
<h2>axios獲取服務器數據</h2>
<button onClick={this.getData}>獲取服務器api接口數據</button>
<hr />
<ul>
{
this.state.list.map((value,key)=>{
return <li key={key}>{value.title}</li>
})
}
</ul>
</div>
);
}
}
export default Axios;
import React, { Component } from 'react';
import fetchJsonp from 'fetch-jsonp';
class FetchJsonp extends Component {
constructor(props) {
super(props);
this.state = {
list:[]
};
}
getData=()=>{
//獲取數據
var api="http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20";
fetchJsonp(api)
.then(function(response) {
return response.json()
}).then((json)=> {
// console.log(json);
this.setState({
list:json.result
})
}).catch(function(ex) {
console.log('parsing failed', ex)
})
}
render() {
return (
<div>
<h2>FetchJsonp 獲取服務器jsonp接口的數據</h2>
<button onClick={this.getData}>獲取服務器api接口數據</button>
<hr />
<ul>
{
this.state.list.map((value,key)=>{
return <li key={key}>{value.title}</li>
})
}
</ul>
</div>
);
}
}
export default FetchJsonp;