【发布时间】:2021-05-06 03:46:32
【问题描述】:
感谢您的帮助,我更新了我的代码。 当我使用 Expo 启动应用程序时,打开工作正常,但我丢失了未出现在屏幕上的扫描图标。 该图标以前出现过。 这个想法是扫描一些条形码以显示来自产品的相关数据。
这是我的新代码:
import React, { useState, useEffect } from "react";
import {
StyleSheet,
Text,
View,
FlatList,
Button,
AsyncStorage,
} from "react-native";
import { useNavigation } from "@react-navigation/core";
import { TouchableOpacity } from "react-native-gesture-handler";
import { FontAwesome5 } from "@expo/vector-icons";
import { MaterialCommunityIcons } from "@expo/vector-icons";
import { ActivityIndicator } from "react-native-paper";
function ProductsScreen() {
const navigation = useNavigation();
const [data, setData] = useState([]);
const [isLoading, setisLoading] = useState(true);
useEffect(() => {
const fetchData = async () => {
const data = await AsyncStorage.getItem("userData");
setData(data);
setisLoading(false);
};
fetchData();
}, []);
console.log(data);
return isLoading ? (
<ActivityIndicator />
) : (
<>
{data ? (
<FlatList
data={dataArray}
keyExtractor={(item) => item.name}
renderItem={({ item }) => (
<>
<Text>{item.brand}</Text>
<View style={styles.scan}>
<MaterialCommunityIcons
name="barcode-scan"
size={40}
color="black"
onPress={() => {
navigation.navigate("CameraScreen");
}}
/>
</View>
</>
)}
/>
) : null}
</>
);
}
export default ProductsScreen;
谢谢你的cmets。
【问题讨论】:
-
确保
AsyncStorage.getItem("userData");正在返回一些东西,而且看起来你可能需要JSON.parse() -
您希望
userData项目包含什么?似乎它可能是未定义的,你没有考虑这种情况。 -
data.map中没有return,把花括号改成圆括号或者在前加上return语句
-
您的
key={index}将呈现为文本,因为它位于标签之外。你需要<React.Fragment key={index}>,而不是仅仅<>,或者更好,而不是索引使用来自data对象的唯一ID。
标签: javascript reactjs react-native