- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我无法在 ListView 中显示 json 数据。我在 console.log 中获取 json 数据,但在 ListView 中却没有 isLoading 始终为 false。我没有收到任何错误 .catch(error => console.warn("error"))。屏幕上的结果是第一个 View ,因为 this.state.isLoading 是 false。
代码如下:
import React, { Component } from 'react';
import { AppRegistry, StyleSheet, ListView, Text, View,Image,TouchableHighlight } from 'react-native';
var productArray = [];
class ListViewDemo extends Component {
constructor(props) {
console.warn("constructor");
super(props);
var dataSource = new ListView.DataSource({rowHasChanged:(r1,r2) => r1.guid != r2.guid});
this.state = {
dataSource: dataSource.cloneWithRows(productArray),
isLoading:true
}
}
componentDidMount() {
console.warn("componentDidMount");
this.getTheData(function(json){
productArray = json;
console.warn(productArray);
this.setState = ({
datasource:this.state.dataSource.cloneWithRows(productArray),
isLoading:false
})
}.bind(this));
console.warn("component -> " + this.state.isLoading);
}
getTheData(callback) {
console.warn("callback");
var url = "https://raw.githubusercontent.com/darkarmyIN/React-Native-DynamicListView/master/appledata.json";
fetch(url)
.then(response => response.json())
.then(json => callback(json))
.catch(error => console.warn("error"));
}
renderRow(rowData, sectionID, rowID) {
console.warn("renderRow");
return (
<TouchableHighlight underlayColor='#dddddd' style={{height:44}}>
<View>
<Text style={{fontSize: 20, color: '#000000'}} numberOfLines={1}>{rowData.display_string}</Text>
<Text style={{fontSize: 20, color: '#000000'}} numberOfLines={1}>test</Text>
<View style={{height: 1, backgroundColor: '#dddddd'}}/>
</View>
</TouchableHighlight>
);
}
render() {
console.warn("render" + this.state.isLoading);
var currentView = (this.state.isLoading) ? <View style={{height: 110, backgroundColor: '#dddddd'}} /> : <ListView dataSource={this.state.dataSource} renderRow={this.renderRow.bind(this)} enableEmptySections={true}/>
return(
<View>
{currentView}
</View>
);
}
}
// App registration and rendering
AppRegistry.registerComponent('AwesomeProject', () => ListViewDemo);
最佳答案
我看到这里有几个错误。
在您的 componentDidMount
中,您正在设置 datasource
而不是 dataSource
:
componentDidMount() {
console.warn("componentDidMount");
this.getTheData(function(json){
productArray = json;
console.warn(productArray);
this.setState = ({
//datasource:this.state.dataSource.cloneWithRows(productArray),
dataSource:this.state.dataSource.cloneWithRows(productArray),
isLoading:false
})
}.bind(this));
console.warn("component -> " + this.state.isLoading);
}
这就是您无法呈现的原因,因为 dataSource
从未被填充。这只是一个小拼写错误。
您可能没有在 getTheData 方法中进入第二个 then,因为您没有返回 Promise:
getTheData(callback) {
console.warn("callback");
var url = "https://raw.githubusercontent.com/darkarmyIN/React-Native-DynamicListView/master/appledata.json";
fetch(url)
//.then(response => response.json())
.then(response => return response.json())
.then(json => callback(json))
.catch(error => console.warn("error"));
}
您的 setState
有误,您分配它而不是调用它:
//this.setState = ({
// datasource:this.state.dataSource.cloneWithRows(productArray),
// isLoading:false
//})
this.setState({
dataSource:this.state.dataSource.cloneWithRows(productArray),
isLoading:false
})
让我知道它是否有效。
关于android - 带有 Json Api 的 ReactNative ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41963524/
Reactnative可以调用原生模块,原生模块也可以给JavaScript发送事件通知.最好的方法是继承RCTEventEmitter.自定义继承自PushEventEmitter的子类RCTEv
我对 React-Native 和 JavaScript 很陌生。我真的不知道如何开始这个小项目 用户可以为每个问题选择 1 个选项 你最喜欢什么宠物? 一只狗 一只猫 您希望您的宠物是什么颜色 红色
我正在使用List从 NativeBase 渲染数据。我尝试过这样设置: body = }
我是 React Native 的新手,一直在尝试一两个示例。当我尝试在我的 Mac 上构建 Android“电影”示例时,出现以下错误: ./gradlew :Examples:Movies:and
已编辑 我是 ReactNative 的新手,我正在尝试在我的文本框上书写。但是,我无法输入任何内容。我尝试将 redux 表单添加到注册屏幕。这是我的 Signup.js : import Reac
单击文本时,我收到一条错误消息“undefined is not an object (evaluating '_this2.categoryClicked.bind')” 我认为错误是“onPres
zzz@zzz-PC ~/AndroidStudioProjects/Example $ react-native run-android Scanning 555 folders for symli
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我们正在尝试构建使用静态库和 cocoapods 依赖项的 ios React native 应用程序。所有依赖项都需要 React。我们面临的问题是,当我们包含静态库时,我们也需要将 React 包
您对如何做到这一点有什么想法吗? 通过单击按钮打开的下拉列表,此下拉列表包含其他项目列表。如果可能的话,动态地! 例如:类别:水果,食品(第一个下拉列表)在这个类别中,每个类别都有一个列表: 水果:[
我已经开始开发一个 react native 应用程序,但我的 ListView 的初始化出现问题。 我正在使用react-native-db-models插件来存储和检索我的数据 问题是我想在rea
尝试在 Android 模拟器上运行我的项目时,设备抛出此错误 emulator screenshot .我似乎无法弄清楚我做错了什么。我还是很新的 react 最佳答案 首先安装babel poly
我有一个事件部分,其中的部分标题包含日期。我需要能够跳转到特定日期,并将初始滚动位置设置为 future 的第一个日期。 为了跳转到特定日期,我尝试将它们的 y 位置存储在状态中。 renderSec
是否可以挂接到 React-Native 的平台特定扩展以使用自定义扩展? 以同样的方式你可以区分 .ios.js 和 .android.js,有没有办法定义自定义扩展 .xyz.js。 (相当于 w
我致力于 React Native(React 16.2.0,React Native 0.54) 我使用 flatlist 显示大量项目。我们可以以拥有 1000 名员工的联系人列表为例。 平面列表
我正在尝试使用我的上下文中的值/函数,但每次我 console.log 一个从上下文中 Coes 的值时,该值是未定义的。 这是我的上下文: import { NativeStackNavigatio
如果我尝试滚动到 ScrollView 的底部,它会弹回其默认位置,并且不会让我查看其全部内容。 我的(截断的)设置相当简单:
我的应用程序中有一个表单,我希望用户能够通过单击“下一步”返回按钮转到下一个 TextInput。我的输入组件: export default class Input extends Comp
这个问题在这里已经有了答案: Basic FlatList code throws Warning - React Native (13 个回答) 4年前关闭。 我正在关注 SectionLists
我希望在 React Native 中使用这个包,这是一个用 Flatlist 实现的轮播,并允许水平滑动来滑动图像。 https://github.com/gusgard/react-native-
我是一名优秀的程序员,十分优秀!