Я новичок в React Native и только что выяснил, как настроить локальный сервер и базу данных для моего собственного приложения.Я использую экспресс и mongodb.Мой сервер и Mongo работают на моем бэкэнде, и я пытаюсь сделать вызов axios, чтобы получить данные из моей базы данных, но массив возвращается пустым, а ответ от данных не определен.Я проверил конечные точки на почтальоне, и конечные точки в порядке.Вот пример моего запроса 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>
);
}
}