这篇借鉴了视频的东西,所以用的是别人视频里写的代码。(狗屁,特么没有源码,我手敲下来的)
好了,在学习之前先把准备工作做好。
创建一个新的react项目,
create-react-app my-demo
在新项目中下载axios和fetch-jsonp
cnpm i axios --save ,cnpm i fetch-jsonp --save
好了,我们开始学习这俩东西。
axios,如果有学过vue的同学就知道,这个是vue官方推荐的ajax。也就是请求接口的东西。
fetch-jsonp则是ES6跨域数据访问。此方法只支持GET方法,而且方法基于ES6的Promise实现
现在我们在src文件夹下创建一个components的文件夹,
创建两个js文件,分别是
Axios.js
Fetch.js
在App.js中引用这两个组件,import。
render(){ return(
<Axios />
<Fetch />
)}
//如果你已经创建好项目并且只需要知道如何使用,那么上面的可以不看。
axios
import axios from‘axios’
constructor(props) {
super(props)
this.state = {
list:[]
}
this.getData = this.getData.bind(this)
}
render() {
return (
<div>
<button onClick={this.getData}>axios</button>
{
this.state.list.map((value,key)=>{ //map方法循环输出数据
return <li key={key}>{value.title}</li>
})
}
</div>
)
}
getData() {
const JsonApi = 'http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20' //这个接口是别人视频里的。
axios.get(JsonApi).then((res)=>{ //这里是成功的回调
console.log(res)
this.setState({
list:res.data.result //把数据存入
})
console.log(222,this.state.list)
}).catch((rsp)=>{ // 此处是数据请求失败后的处理
console.log(rsp)
})
}
fetch-jsonp
import fetchJsonp from 'fetch-jsonp'
constructor(porps) {
super(porps)
this.state = {
list: [],
}
this.getData = this.getData.bind(this)
}
render() {
return (
<div>
<button onClick={this.getData}>jsonp</button>
{
this.state.list.map((value, key) => { //map方法循环输出数据
return <li key={key}>{value.title}</li>
})
}
</div>
)
}
getData() {
const JsonApi = 'http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20'
fetchJsonp(JsonApi)
.then((response) => {
return response.json() //这里是固定写法不用管他。
}).then((res) => { //成功回调
this.setState({ // 在此处进行接收数据之后的操作
list: res.result //存入数据
})
console.log('parsed json', res);
}).catch((ex) => {
console.log('parsing failed', ex) // 此处是数据请求失败后的处理
})
}
以上代码成功后,在页面上展示两个按钮。
按下之后的效果图
以上数据展示出来了。如果有不成功的,可以下方留言求助。(虽然我也不一定会。)
如果有任何意义上的错误或者有可以补充的知识点,欢迎下方留言。
我是海星吧,咱们下一篇见。