Я попытался настроить простой реагирующий род 0.59.4 проект и столкнулся с некоторой проблемой утечки памяти. Поэтому я создал минималистичный пример для воспроизведения проблемы.
У меня есть плоский список реагирования и 2 кнопки. Первая кнопка устанавливает состояние реакции и заполняет массив, который должен отображать плоский список. Вторая кнопка устанавливает состояние в пустой массив, чтобы очистить плоский список. Мой плоский список отображает только несколько текстовых компонентов.
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, Button, FlatList} from 'react-native';
export default class App extends Component<Props> {
constructor() {
super();
this.state = {
result: [],
}
}
create() {
let arr = [];
for (let i = 0; i <= 5000; i++) {
arr.push({text: "some text"});
}
this.setState({
result: arr,
});
arr = null;
}
release() {
this.setState({
result: [],
});
}
renderItem() {
return <Text>entry</Text>;
}
render() {
return (
<View style={styles.container}>
<View style={styles.inline}>
<Button title="Create" onPress={this.create.bind(this)}></Button>
<Button title="Release" onPress={this.release.bind(this)}></Button>
</View>
<FlatList
data={this.state.result}
renderItem={this.renderItem.bind(this)}
keyExtractor={(item, index) => index.toString()}>
</FlatList>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
inline: {
display: 'flex',
flexDirection: 'row',
},
});
Я ожидаю, что использование памяти уменьшится после того, как я удалю записи в массиве до точки, в которой это было до заполнения плоского списка. Память освобождает только небольшое количество, но она складывается после многократного заполнения и очистки массива.