reactjs - 收到错误说 TypeError undefined is not an object
问题描述
我正在尝试在 Listview 中显示数据。首先,我根据用户在前一个屏幕上所做的选择过滤数据(JSON 文件)。我通过说将参数传递到下一个屏幕:
this.props.navigation.state.params.JSON_ListView_Clicked_Item)
根据上面的参数,我在render函数里面做了ListView.DataSource。唯一的原因是,我尝试在渲染函数中执行 ListView.DatSource,因为据我了解,这是唯一可以读取参数值的地方。当我尝试显示我的 listView 时,我收到一条错误消息:
TypeError undefined 不是对象。下面是屏幕截图:
下面是我的代码:
import React, { Component } from 'react';
import { StyleSheet, Text, View, ListView, ActivityIndicator, TextInput } from 'react-native';
import ServiceDetails from '../reducers/ServiceDetails';
class ServiceListDetails extends Component
{
static navigationOptions =
{
title: 'SecondActivity',
};
ListViewItemSeparator = () => {
return (
<View
style={{
height: .5,
width: "100%",
backgroundColor: "#000",
}}
/>
);
}
render()
{
var x = this.props.navigation.state.params.JSON_ListView_Clicked_Item ;
var newList = ServiceDetails.filter(obj => obj.fk === this.props.navigation.state.params.JSON_ListView_Clicked_Item)
let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.setState({
dataSource: ds.cloneWithRows(newList)
}
);
return(
<View style={styles.MainContainer}>
<ListView
dataSource={this.dataSource}
renderSeparator= {this.ListViewItemSeparator}
renderRow={(rowData) => <Text>{rowData}</Text>}
/>
</View>
);
}
}
下面是我的 JSON 文件:
[
{
"id":"1",
"fk": "1",
"addr": "TestAddress1",
"phone": "(888)889-9999",
"LatL":"33.234567",
"Long2":"117.284725",
"Online": "x"
},
{
"id":"2",
"fk": "1",
"addr": "TestAddress1",
"phone": "(999)-999-9999",
"LatL":"33.971110",
"Long2":"117.31111",
"Online": ""
},
]
解决方案
您在定义 JSON 文件时是一个错误。在数组中的最后一个对象中","
不需要它不是有效的 JSON 格式。
[
{
"id": "1",
"fk": "1",
"addr": "TestAddress1",
"phone": "(888)889-9999",
"LatL": "33.234567",
"Long2": "117.284725",
"Online": "x"
},{
"id": "2",
"fk": "1",
"addr": "TestAddress1",
"phone": "(999)-999-9999",
"LatL": "33.971110",
"Long2": "117.31111",
"Online": "y"
}
]
推荐阅读
- powershell - 如何在 Powershell 中使用 OCSP 地址测试证书验证
- pdf - convertapi pdf to image:指定页面范围
- react-native - 什么是 React-Native 中的指针事件
- esp8266 - 最后的固件版本无法连接
- vue.js - 如何使用 ramda 和 vue 对过滤后的数据进行分页
- java - 这两个关于接口的代码有什么区别?
- python - 将 4*1 数据帧重塑为 2*2 数据帧
- python - 为什么 Python 中的“pickle”和“multiprocessing picklability”如此不同?
- javascript - NuxtJs 无法读取未定义的属性“_normalized”
- c++ - 在堆栈上分配的结构的 C++ 向量