reactjs - 类型'never []上不存在属性,有什么问题?
问题描述
所有,我是 React+Typescript 主题的新手。在我的示例代码中,我得到 json 对象并将一个属性打印到控制台上。来自服务器的数据成功来了。但是通过尝试使输出我收到消息“属性'专辑'不存在类型'never []' ”,尽管所有类型都已定义。我哪里错了?我应该以某种方式初始化该州的“画廊”吗?
import React, { Component, Props } from 'react';
import axios from 'axios';
const API = 'http://www.mydomain/testapi/';
const DEFAULT_QUERY = 'test.php';
type Image = {
id: number,
name: string,
title: string,
date: string,
size: number
}
type Album = {
id: number,
name: string,
path: string,
images: Image[]
}
interface State {
jsonFromServer: string,
isLoading: boolean,
errorMsg: string,
buttonClicked: boolean,
gallery:Album[]
}
class App extends React.Component {
state = {
isLoading: false,
errorMsg: '',
buttonClicked: false,
jsonFromServer: "",
gallery:[]
}
getInfo() {
this.setState({ isLoading: true, buttonClicked: true });
axios.get(API + DEFAULT_QUERY)
.then(result => this.setState({
gallery: result.data.gallery,
isLoading: false,
jsonFromServer: result.data
}))
.catch(error => this.setState({
errorMsg: error.message,
isLoading: false
}));
}
render() {
.....
if (this.state.buttonClicked) {
this.state.galerie.length > 0 ? console.log('=>', this.state.gallery.album.id) : '';
}
......
}
}
export default App;
解决方案
您定义state
但没有指定它的类型。因此,Typescript 将state
根据初始化推断类型。因为galerie
是一个数组但没有元素,所以打字稿可以推断出的最好和最安全的类型是never[]
解决方案是注释state
成员:
class App extends React.Component {
state:State = {
isLoading: false,
errorMsg: '',
buttonClicked: false,
jsonFromServer: "",
gallery:[]
}
//...
}
推荐阅读
- deep-linking - 使用 branch.io 创建 Facebook 应用程序链接
- php - 从输入多维数组返回聚合数组
- amazon-web-services - 混合设置中的 Kubernetes 集群自动缩放器
- raspberry-pi - 如何在树莓派 3 上安装 ROS(机器人操作系统)
- python - 如何使用没有列标题的索引从熊猫数据框中访问一行?
- protocol-buffers - 使用不支持的平台解码 Protobuf 编码数据
- python - Python 日志文件名从目录到文本文件
- intellij-idea - Intellij 插件键盘映射首笔值
- javascript - 使用 Javascript API 从 Azure 存储表查询中获取特定列
- asp.net - Nuget包“Swagger-Net”swagger-ui默认ui页面在Asp.net mvc5中修改