Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Firebase中基于对象的密钥UID删除对象?_Javascript_Reactjs_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 如何在Firebase中基于对象的密钥UID删除对象?

Javascript 如何在Firebase中基于对象的密钥UID删除对象?,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,我有一个React组件,它列出了房间的UID(Firebase中的随机ID),以及roomName和creator 这是Firebase中的JSON结构: 任务很简单,单击X,我希望它删除关键用户单击的节点(及其子节点)。例如,如果用户按第二个键单击x,KetjGmLHYrbpX6xt_dd,Firebase将删除KetjGmLHYrbpX6xt_dd和RoomName:Holy孵化器|创建者:Robin const dbRef = firebase.initializeApp(config

我有一个React组件,它列出了房间的UID(Firebase中的随机ID),以及
roomName
creator

这是Firebase中的JSON结构:

任务很简单,单击
X
,我希望它删除关键用户单击的节点(及其子节点)。例如,如果用户按第二个键单击x,
KetjGmLHYrbpX6xt_dd
,Firebase将删除
KetjGmLHYrbpX6xt_dd
RoomName:Holy孵化器|创建者:Robin

const dbRef = firebase.initializeApp(config).database().ref().child('rooms');

class App extends Component {
  constructor(){
    super();
    this.state = {
      text: '',
      roomName: '',
      creator: '',
      firebaseList: {},
      firebaseValuesArray: [],
      firebaseUIDArray: []
    }
  }
  componentDidMount(){
    dbRef.on('value', snap => {
      this.setState({
        firebaseList: snap.val(),
        firebaseUIDArray: Object.keys(snap.val())
      }, () => {});
    });
  }
...
//function that's supposed to remove the item
  removeItem(index){
    dbRef.child(index).remove();
  }
...
render(){
  return (
    ...
    <DisplayFirebaseValues removeItem={this.removeItem.bind(this)} firebaseList={this.state.firebaseList} />
...


//on DisplayFirebaseValues.js:

class DisplayFirebaseValues extends React.Component{
  render(){
    const firebaseUID = Object.keys(this.props.firebaseList).map((firebaseItem, index) => {
      return <li key={index}><a href="#" onClick={this.props.removeItem}>X</a> {firebaseItem}</li>
    })
...
我如何使其工作,以便用户可以单击
X
并删除该特定数据?我试过了,但没有成功。我错过了一些东西,但不知道是什么

PS:如果有帮助,我将整个
房间
对象存储在
this.state.firebaseList
中,并将
this.state.firebaseUIDArray中的所有键存储在

firebaseList:  Object {-KeoiS8luCsuKhzc_Eut: Object, -KetjGmLHYrbpX6xt_dd: Object, -Kf99qMofAEvj1ajmPc5: Object}
firebaseUIDArray:  ["-KeoiS8luCsuKhzc_Eut", "-KetjGmLHYrbpX6xt_dd", "-Kf99qMofAEvj1ajmPc5"]

看起来您没有在bound removeItem函数中传回映射的对象键。您可以这样做:
onClick={()=>this.props.removietem(firebaseItem)}
您是否发现了错误?我也有类似的情况。看起来您没有在bound removeItem函数中传回映射的对象键。您可以这样做:
onClick={()=>this.props.removietem(firebaseItem)}
您是否发现了错误?我也有类似的情况。
firebaseList:  Object {-KeoiS8luCsuKhzc_Eut: Object, -KetjGmLHYrbpX6xt_dd: Object, -Kf99qMofAEvj1ajmPc5: Object}
firebaseUIDArray:  ["-KeoiS8luCsuKhzc_Eut", "-KetjGmLHYrbpX6xt_dd", "-Kf99qMofAEvj1ajmPc5"]