我是一个全新的React Native,刚刚想出了为我的本机应用程序设置一个本地服务器和数据库。我使用的是express和mongodb。我让我的服务器和mongo在我的后端上运行,并尝试进行axios调用以从我的数据库中获取数据,但是数组返回时是空的,并且来自数据的响应是未定义的。我已经在postman上测试了端点,并且端点没有问题。下面是我的api axios请求和我试图获取数据的组件的一个示例。非常感谢您的帮助!此外,如果你想看到任何其他代码,让我知道,我会张贴它。
// api.js
import axios from "axios";
export const getAllTweets = async () => {
await axios
.get("http://(my ip address):(port number)/api/tweet")
.then(response => {
console.log("response: ", response);
return response.data;
})
.catch(error => {
console.log("There are no tweets to get!", error);
});
};
//HomeScreen.js
import React from 'react';
import {
Image,
Platform,
ScrollView,
StyleSheet,
Text,
TouchableOpacity,
View,
} from 'react-native';
import { WebBrowser } from 'expo';
import { getAllTweets } from '../constants/api';
import { MonoText } from '../components/StyledText';
export default class HomeScreen extends React.Component {
static navigationOptions = {
header: null,
};
static defaultProps = {
getAllTweets
};
state = {
tweets: [],
isLoading: false
}
async componentDidMount() {
this.setState({ isLoading: true });
let data = await this.props.getAllTweets();
console.log('data: ', data);
try {
this.setState({ isLoading: false, tweets: data });
} catch (error) {
console.log(error, "Cannot get tweets in cdm");
}
}
render() {
console.log("this.state.tweets", this.state.tweets); <--- this is empty
return (
<View style={styles.container}>
</View>
);
}
_maybeRenderDevelopmentModeWarning() {
if (__DEV__) {
const learnMoreButton = (
<Text onPress={this._handleLearnMorePress} style={styles.helpLinkText}>
Learn more
</Text>
);
return (
<Text style={styles.developmentModeText}>
Development mode is enabled, your app will be slower but you can use useful development
tools. {learnMoreButton}
</Text>
);
} else {
return (
<Text style={styles.developmentModeText}>
You are not in development mode, your app will run at full speed.
</Text>
);
}
}
发布于 2019-01-04 14:26:34
我找到了答案。请求不是通过标准ip地址发送的。通过进入系统偏好设置=>网络=> TCP/IP (选项卡)并使用IPv4 ip地址,它纠正了这个问题。它还通过向其提供运行模拟器的虚拟路由器10.0.2.2的ip地址来工作。
https://stackoverflow.com/questions/54030670
复制相似问题