typescript - 打字稿:“从不”类型上不存在属性“标题”
问题描述
我正在练习 React-native 打字稿。我从jsonplaceholer API获取数据并添加到我的组件状态。映射状态并尝试在我的手机上渲染后。但是我在终端上收到打字稿错误:property "title" does not exist on type 'never'
.
这是我的应用组件
import React, { useState, useEffect } from "react";
import { StyleSheet, Text, View, ScrollView, Image } from "react-native";
export default function App() {
const [state, setstate] = useState([]);
useEffect(() => {
fetchData();
}, []);
const fetchData = async () => {
const response = await fetch("https://jsonplaceholder.typicode.com/photos");
const data = await response.json();
setstate(data);
};
return (
<ScrollView style={styles.body}>
<View style={styles.container}>
{state.map(list => {
return <Text>{list.title}</Text>; //
})}
</View>
</ScrollView>
);
}
const styles = StyleSheet.create({
body: {
padding: 150
},
container: {
flex: 1,
backgroundColor: "white",
alignItems: "center",
justifyContent: "center"
},
stretch: {
width: 50,
height: 200,
resizeMode: "stretch"
}
});
解决方案
您必须将您的状态定义为任何类型的数组:
const [state, setstate] = useState([] as any[]);
默认情况下,TypeScript 将空数组定义为never[]
. 那是一个永远为空的数组。TS的奇怪之处。这个问题的更多信息。
推荐阅读
- javascript - 无法对从 innerText 提取的日期数组进行排序
- python - 如何在 AWS Lambda 中最好地使用 Python 3 的 mimetypes 模块?
- python - 使用 PyMongo 的 MongoDB Atlas 的 ServerTimeoutError(运行设置代码)
- c - 欧拉计划 - 问题 22:答案降低 3.35%
- c# - 如果给定函数参数而不是文字,实体框架和 Oracle,Linq where 子句字符串比较不返回任何记录
- java - Lombok 和 builder 注释
- javascript - 将动画添加到下拉菜单
- excel - 如何修复“运行时错误 1004,对象“_Application”的方法“宽度”失败”
- javascript - 显示完全错误图标的材料设计图标
- amazon-web-services - 使用 AWS-SDK 访问 AWS SSO