Javascript 使用React和firereact从Firebase中删除节点
我对reactfire的工作方式感到相当困惑,因为它在文档方面似乎不太明智 所以我想删除和更新一些子节点,但我不知道如何做。所有教程都只关注检索数据,这些数据被视为一个常规数组,我甚至似乎都无法访问它们的密钥 以下是官方的例子: 如何使用React执行这些操作 实例化FB后:Javascript 使用React和firereact从Firebase中删除节点,javascript,firebase,reactjs,Javascript,Firebase,Reactjs,我对reactfire的工作方式感到相当困惑,因为它在文档方面似乎不太明智 所以我想删除和更新一些子节点,但我不知道如何做。所有教程都只关注检索数据,这些数据被视为一个常规数组,我甚至似乎都无法访问它们的密钥 以下是官方的例子: 如何使用React执行这些操作 实例化FB后: ``` this.fb = new Firebase('https://react-testing.firebaseio.com/items'); this.bindAsArray(this.fb, 'items'); `
```
this.fb = new Firebase('https://react-testing.firebaseio.com/items');
this.bindAsArray(this.fb, 'items');
```
“items”将绑定到此.state.items。酷,现在我有数据了
但我如何操纵它呢?获取对正在传递的项的引用的正确方法是什么?正如我在评论中所说:ReactFire是常规Firebase JavaScript SDK的一小部分的小包装器。如果您想构建一个超出其能力范围的应用程序,您可以轻松地对其进行扩展 根据您的请求,我继续在ReactFire中更改了以下代码片段:
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
out.push(obj[key]);
}
}
为此:
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var item = obj[key];
item['$id'] = key;
out.push(item);
}
}
因此,我们现在将每个项目的key()
作为数组中项目的“特殊”$id
属性传递
有了它,我可以将原始版本的TodoList3
类扩展为:
var TodoList3 = React.createClass({
handleClick: function(key) {
if (this.props.onClick) {
this.props.onClick(key);
}
},
render: function() {
var list = this;
var createItem = function(item) {
var boundClick = list.handleClick.bind(list, item['$id']);
return <li key={ item['$id'] } onClick={boundClick}>{ item.text }</li>;
};
return <ul>{ this.props.items.map(createItem) }</ul>;
}
});
然后,该应用程序将通过调用常规Firebase JavaScript SDK来删除该项
handleClick: function(key) {
var firebaseRef = this.state.ref;
firebaseRef.child(key).remove();
},
链接:
handleClick: function(key) {
var firebaseRef = this.state.ref;
firebaseRef.child(key).remove();
},