Shu*_*ham 5 javascript react-native react-native-flatlist
我是本机的新手,但我正在尝试动态更新列表。
下面是我的代码:
import React, { Component } from "react";
import { View, Text, StyleSheet, FlatList } from "react-native";
import { Tile, ListItem, List } from "react-native-elements";
export default class JoinSession extends Component {
constructor() {
super();
this.state = {
dataToRender: [{ "id": "0", "name": "name0", "des": "des0" }]
}
}
componentDidMount() {
var counter = 0;
const interval = setInterval(() => {
try {
var temp = {
"id": ++counter + "",
"name": "name" + counter,
"des": "des" + counter
}
let tempArray = this.state.dataToRender;
tempArray.push(temp);
this.setState({
dataToRender: tempArray
});
console.log(this.state.dataToRender);
if(counter === 10) {
clearInterval(interval);
}
} catch (e) {
console.log(e.message);
}
}, 2000);
}
renderList(item) {
console.log(item);
return (
<ListItem
roundAvatar
title={item.name}
subtitle={item.des}
/>
);
}
render() {
return (
<View style={{ flex: 1, alignItems: "stretch", backgroundColor: "skyblue" }}>
<List>
<FlatList
data={this.state.dataToRender}
renderItem={({ item }) => this.renderList(item)}
keyExtractor={item => item.id}
/>
</List>
</View>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我只能获取在构造函数中声明的第一个元素,但是我在serInterval中附加的数据未显示在页面上。
请帮助我解决它,或者如果还有其他方法可以解决,请告诉我。
提前致谢。
嗨,尝试看看您可以在FlatList上使用的extraData参数:
通过传递extraData={this.state}给FlatList,我们确保当state.selected更改时,FlatList本身将重新呈现。如果不设置此道具,FlatList将不知道它需要重新渲染任何项目,因为它也是PureComponent,并且道具比较不会显示任何更改。
<FlatList
...
extraData={this.state}
/>
Run Code Online (Sandbox Code Playgroud)
有关FlatList文档的更多信息:https ://facebook.github.io/react-native/docs/flatlist.html
同样,您不应该<List>从react native元素中获取此信息,这里的列表行为完全由FlatList处理。
| 归档时间: |
|
| 查看次数: |
2740 次 |
| 最近记录: |