我正在使用从领域数据库中获取的数组来呈现任务平面表,但是,当我更改数据库中的内容时,除非离开页面,否则列表不会重新呈现。而且我不确定如何指示它,如果我一直在使用redux,我会将其状态作为额外数据,但是在这里我不确定该怎么做。
一些代码段:
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}
/>
编辑:注意-它确实正确地从数据库中删除了项目,列表只是不知道要重新呈现,而且我也不知道如何指示它
答案 0 :(得分:0)
您可以在删除任务后尝试再次设置领域对象,然后重新呈现列表吗?
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.
});
});
};