У меня есть FlatList, который работает, как и ожидалось, при использовании простого старого тега <Text>
, но при использовании пользовательского компонента внутри renderItem FlatList не будет повторно отображаться при изменении this.state.dayOfYear
. При загрузке приложения, когда я устанавливаю this.state.dayOfYear
, оно загружается правильно. Но когда я снова изменю состояние, он не изменит FlatList.
Код FlatList
<FlatList
style={{flex: 1}}
extraData={this.state}
data={reading_data[this.state.dayOfYear]}
renderItem={({item}) => <DayRow content={item}/>} //does not work
// renderItem={({item}) => <Text>{item.ref}</Text>} //Works perfectly
keyExtractor={(item, index) => index}
/>
Пользовательский элемент рендеринга (DayView.js)
import {StyleSheet, Text, View} from 'react-native'
import React, {Component} from 'react';
export default class DayRow extends React.Component {
constructor(props) {
super(props)
console.log(props)
this.state = {
content: props.content,
}
}
render() {
return (
<View style={styles.row}>
<Text style={styles.text}>{this.state.content.ref}</Text>
<View style={{height: 2, backgroundColor:'#abb0ab'}}/>
</View>
);
}
}
const styles = StyleSheet.create({
row: {
backgroundColor: '#fff'
},
text: {
fontSize: 16,
padding: 10,
fontWeight: 'bold',
color: '#000',
},
});
module.exports = DayRow;