【发布时间】:2021-02-10 00:39:26
【问题描述】:
我刚刚开始学习 React Native 和移动设备开发。我尝试过的一件事是使用 fetch API 从http://jsonplaceholder.typicode.com/posts 获取数据 App.js 文件如下:
import { StatusBar } from 'expo-status-bar';
import React from 'react';
import { StyleSheet, Text, View, Button, TextInput } from 'react-native';
export default function App() {
const [firstLoad, setLoad] = React.useState(true);
const [data, upDateData] = React.useState([]);
let isLoading = true;
async function sampleFunc() {
let response = await fetch("https://jsonplaceholder.typicode.com/posts");
let body = await response.json();
upDateData(body);
}
if (firstLoad) {
sampleFunc();
setLoad(false);
}
if (data.length > 0) isLoading = false;
const posts = data.map(post => (
<div>
<h1>{post.title}</h1>
<p>{post.body}</p>
</div>
));
return (
<View style={styles.container}>
{isLoading ?
<Text>Loading</Text> :
<Text>{posts}</Text>
}
</View>
);
}
这里没有什么花哨的事情,只是向服务器发出 https 请求以获取帖子。在传输数据的同时,会显示 Loading 标签,然后所有获取的帖子都会呈现在页面上。
我正在使用 Expo,当我在浏览器中运行它时一切正常,但是当我扫描 QR 码时,Expo 应用程序打开,加载消息显示几秒钟,然后应用程序崩溃。
我可能在这里做一些典型的常规 React 并且在 React Native 中没有使用的事情。奇怪的是它可以在我的电脑上运行,而不是在手机上运行。任何建议将不胜感激。提前谢谢!
【问题讨论】:
标签: react-native fetch expo