Как я могу получить свой React Native Flatlist для перезагрузки при обновлении данных области? - PullRequest
0 голосов
/ 03 июля 2018

Я использую массив, полученный из базы данных своего царства, для рендеринга плоского списка задач, однако, когда я изменяю материал в базе данных, список не будет отображаться, пока я не покину страницу. И я не уверен, как это сделать, если бы я использовал избыточность, я бы поставил его как экстраданные, но здесь я не уверен, что делать.

Некоторые фрагменты кода:

  async componentWillMount() {
try {
  let realm = await Realm.open({
    schema: [TaskSchema]
  });
  this.setState({ realm });
} catch (err) {
  console.log(err);
  console.log('we screwed boys');
}

Как обновить базу данных, не покидая страницы:

onDeleteClick = () => {
const realm = this.state.realm;
realm.write(() => {
  let completedTasks = this.state.realm.objects('Task').filtered('isComplete = true');
  realm.delete(completedTasks);
});

объявление плоского списка в render ():

let tasks = null;
if (this.state.realm) {
  tasks = this.state.realm.objects('Task');
}
return (
  <View style={styles.backgroundStyle}>
    <FlatList
      data={tasks}
      renderItem={this.renderTasks}
      keyExtractor={(item) => item.title}
    />

edit: note - он правильно удаляет элементы из базы данных, список просто не знает, как визуализировать заново, и я не знаю, как его указать

1 Ответ

0 голосов
/ 03 июля 2018

Можете ли вы попытаться снова установить объект области после удаления задач, тогда он должен заново отобразить список

 onDeleteClick = () => {
      const realm = this.state.realm;
      realm.write(() => {
        let completedTasks = this.state.realm
          .objects("Task")
          .filtered("isComplete = true");
        realm.delete(completedTasks);

        this.setState({
          realm, // set realm object using setState to re render the list.
        });
      });
    };
...