【发布时间】:2018-07-05 21:32:50
【问题描述】:
我在这里有一个使用 react 和 firebase 的待办事项列表。我可以成功地从 firebase 中删除一个项目并添加一个。问题是在删除项目后对重新渲染做出反应。我正在玩它,我意识到我做错了什么,但不知道如何解决我的问题。
这是我的 componentDidMount 方法,我将状态设置为等于 Firebase 发送的数据。
componentDidMount() {
this.todosRef.on('child_added', snapshot => {
const todo = { key: snapshot.key, value: snapshot.val() }
this.setState({ todos: this.state.todos.concat( todo ) });
});
this.todosRef.on('child_removed', snapshot => {
const removedTodo = { key: snapshot.key, value: snapshot.val() }
const index = this.state.todos.indexOf(removedTodo);
this.setState({ todos: this.state.todos.splice(index, removedTodo)
});
});
}
正如您所看到的,每当我删除一个项目并调用 this.setState({ todos: this.state.todos.splice(index, removedTodo) }); 时,它会将状态设置为一个空数组(因为我试图将状态设置为我刚刚删除的项目......)重新渲染该页面并没有显示任何内容。我希望它重新渲染页面并且仍然有剩余的待办事项。
【问题讨论】:
标签: javascript reactjs firebase