【发布时间】:2018-06-14 12:54:09
【问题描述】:
我正在使用 XMLHttpRequest api 在 react native android 应用程序中从服务器请求资源 这是我的应用代码(客户端)
import React,{Component} from 'react';
import {Text,View,StyleSheet,TouchableOpacity} from 'react-native';
class Home extends Component
{
state={con:''}
show=()=>
{
alert("show function called");
var req=new XMLHttpRequest();
req.onreadystatechange=(e)=>
{
if(req.status==200 && req.readyState==4)
{
alert(req.responseText);
}
}
req.open("GET","http://localhost:3000/show_react");
req.send();
}
render()
{
return(
<View style={styles.container}>
<TouchableOpacity onPress={()=>this.show()} style={styles.box}><Text>Click</Text></TouchableOpacity>
<Text>{this.state.con}</Text>
</View>
);
}
}
export default Home;
const styles=StyleSheet.create({
box:
{
padding:10,
width:200,
marginTop:10,
backgroundColor:'rgba(215, 44, 149, 0.7)',
alignItems:'center'
},
container:
{
flexDirection:'row',
justifyContent:'center'
}
});
下面是我的简单 node.js 代码(服务器端),用于接受来自客户端的请求
app.get("/show_react",function(req,res){
console.log("show_react called");
res.send("hii react");
});
上面的服务器端代码在浏览器请求时运行成功,但在客户端请求时不起作用(反应原生应用程序)。 任何答案表示赞赏。
【问题讨论】:
-
为什么不使用
fetch?这是一个更友好的 API,在 React Native 中支持。 -
但是 XMLHttpRequest api 更容易学习。所有语法都类似于纯javascript XMLHttp请求
-
fetch是 Web API 的一部分,就像 XMLHttpRequest 和 是 JavaScript,我不明白你关于“类似于纯 JavaScript 的语法”的说法。fetch本身也有更多的功能,并且 由 React Native 支持,这与 XMLHttpRequest 不同。而且 IMO 学习起来并不容易。您可以使用fetch用 3 行代码来代替使用 XMLHttpRequest 的 8-10 行代码。 -
React Native 支持 XMLHttpRequest。您的代码似乎没有问题,您能否详细说明它是如何不起作用的、您收到了什么、任何错误等?另外,您能否与另一台服务器核对,以确保该问题与 XMLHttpRequest 有关?
标签: javascript android node.js react-native xmlhttprequest