您的位置:首页 > 理论基础 > 计算机网络

react-native(Fetch网络请求数据)

2017-01-16 22:34 621 查看

语法使用:

fetch(参数)
.then(完成的回调函数)
.catch(失败的回调函数)


fetch(url,opts)

.then((response) => {

//请求成功后返回的对象response

//例如:json、text等

return response.text();

return response.json();

})

.then((responseData) => {

//处理请求得到的数据

})

.catch((error) => {

//网络请求失败执行该回调函数,得到错误信息

})


语法很简单,感觉类似于Android新建Notification一样。

then第一个是获取整个数据,第二个是根据第一个数据转换而来的你所需要的数据,也就是说你需要一个json数据那么在第一步返回json就好。

1、GET请求

getRequest(url){
/*网络请求的配置*/
var opts = {
method:"GET"
}
fetch(url,opts)
.then((response) => {
return response.text();
})
.then((responseText) => {
alert(responseText);
})
.catch((error) =>{
alert(error);
})
}


2、POST请求

postRequest(url){
let formData = new FormData();
formData.append("username","SuperBigLw");
formData.append("password","123456");
var opts = {
method:"POST",
body:formData
}
fetch(url,opts)
.then((response) => {
return response.text();
})
.then((responseText) => {
alert(responseText);
})
.catch((error) => {
alert(error)
})
}


完整代码

import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
TouchableOpacity
} from 'react-native';

/*
语法:
fetch(参数) .then(完成的回调函数) .catch(失败的回调函数)
fetch(url,opts)
.then((response) => {
//请求成功后返回的对象response
//例如:json、text等
return response.text();
return response.json();
})
.then((responseData) => {
//处理请求得到的数据
})
.catch((error) => {
//网络请求失败执行该回调函数,得到错误信息
})
* */
var getUrl = "http://project.lanou3g.com/projects/bj/reactnative/login.php?username=lanou&password=123";
var postUrl = "http://project.lanou3g.com/projects/bj/reactnative/login.php";
class getData extends Component{
getRequest(url){
/*网络请求的配置*/
var opts = {
method:"GET"
}
fetch(url,opts)
.then((response) => {
return response.text();
})
.then((responseText) => {
alert(responseText);
})
.catch((error) =>{
alert(error);
})
}
postRequest(url){
let formData = new FormData();
formData.append("username","SuperBigLw");
formData.append("password","123456");
var opts = {
method:"POST",
body:formData
}
fetch(url,opts)
.then((response) => {
return response.text();
})
.then((responseText) => {
alert(responseText);
})
.catch((error) => {
alert(error)
})
}
render(){
return(
<View style={styles.container}>
<TouchableOpacity onPress={this.getRequest.bind(this,getUrl)}>
<View style={styles.btn}>
<Text>GET</Text>
</View>
</TouchableOpacity>
<TouchableOpacity onPress={this.postRequest.bind(this,postUrl)}>
<View style={styles.btn}>
<Text>POST</Text>
</View>
</TouchableOpacity>
</View>
);
}
}
const styles = StyleSheet.create({
container:{
backgroundColor:"cyan",
flexDirection:"row",
justifyContent:"space-around",
alignItems:"center",
flex:1
},
btn:{
width:60,
height:30,
borderWidth:1,
borderRadius:3,
borderColor:"black",
backgroundColor:"yellow",
justifyContent:"center",
alignItems:"center"

}
});
module.exports = getData;

2.index.android.js

[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
/**
* Sample React Native App
* https://github.com/facebook/react-native * @flow
*/

import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
var GetData = require("./getData");
export default class FetchDemo extends Component {
render() {
return (
<GetData/>
);
}
}

const styles = StyleSheet.create({

});

AppRegistry.registerComponent('FetchDemo', () => FetchDemo);


原文出自

http://blog.csdn.net/superbiglw/article/details/54574161
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 url 数据