Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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反应本机_Javascript_Firebase_React Native_Firebase Realtime Database - Fatal编程技术网

Javascript 按键删除项目,Firebase反应本机

Javascript 按键删除项目,Firebase反应本机,javascript,firebase,react-native,firebase-realtime-database,Javascript,Firebase,React Native,Firebase Realtime Database,我有一个简单的Notes React本机应用程序,我能够向其中添加和获取数据,但我不确定如何删除/更新数据。主要的问题是获取我告诉firebase要删除哪些数据的部分。如何将firebase密钥传递给以该密钥为参数的“delete”函数,并将其从firebase中删除。 我是React Native的绝对初学者,我的代码如下: export default class App extends React.Component { constructor(props) { super(pro

我有一个简单的Notes React本机应用程序,我能够向其中添加和获取数据,但我不确定如何删除/更新数据。主要的问题是获取我告诉firebase要删除哪些数据的部分。如何将firebase密钥传递给以该密钥为参数的“delete”函数,并将其从firebase中删除。 我是React Native的绝对初学者,我的代码如下:

export default class App extends React.Component {
  constructor(props) {
  super(props);
  this.state = {
    all_notitas: [],
    notita_text: ''
  };
};

componentWillMount() {
  const notitasRef = firebase.database().ref('notitas');
  this.listenForNotitas(notitasRef);
};

listenForNotitas = (notitasRef) => {
  notitasRef.on('value', (dataSnapshot) => {
    var aux = [];
    dataSnapshot.forEach((child) => {
      aux.push({
        date: child.val().date,
        notita: child.val().notita
      });
    });
    this.setState({all_notitas: aux});
  });
};  // listenForNotitas

render() {
  let show_notitas = this.state.all_notitas.map((val, key) => {
    return (
      <Notita
        key={key}
        keyval={key}
        val={val}
        eventDeleteNotita={()=>this.deleteNotita(key)}> // I THINK THIS IS THE PROBLEM
      </Notita>
    );
  });

  return (
    <View style={styles.container}>

      <View style={styles.header}>
        <Text style={styles.headerText}>NOTITAS</Text>
      </View>

      <ScrollView style={styles.scrollContainer}>
        {show_notitas}
      </ScrollView>

      <View style={styles.footer}>
        <TouchableOpacity
          style={styles.addButton}
          onPress={this.addNotita.bind(this)}>
          <Text style={styles.addButtonText}>+</Text>
        </TouchableOpacity>

        <TextInput
          style={styles.textInput}
          placeholder='>>> Escribir notita'
          placeholderTextColor='white'
          underlineColorAndroid='transparent'
          onChangeText={(notita_text) => (this.setState({notita_text}))}
          value={this.state.notita_text}>

        </TextInput>
      </View>

    </View>
  );
}

addNotita() {
  if (this.state.notita_text) {
    var d = new Date();
    dataForPush = {
      'date': d.getDate() + '-' +  d.getMonth() + '-' + d.getFullYear(),
      'notita': this.state.notita_text
    };
    firebase.database().ref('notitas').push(dataForPush);
    this.state.all_notitas.push(dataForPush);
    this.setState(
      {
        all_notitas: this.state.all_notitas,
        notita_text: '',  // Limpiar input
      }
    )
  }  // end if
}  // addNotita

在将注释添加到
aux
时,您正在从Firebase中删除密钥。解决方案是将Firebase的密钥保存在其中:

notitasRef.on('value', (dataSnapshot) => {
  var aux = [];
  dataSnapshot.forEach((child) => {
    aux.push({
      date: child.val().date,
      notita: child.val().notita,
      id: child.key
    });
  });
  this.setState({all_notitas: aux});
}
然后使用以下命令将该值传递给
deleteNotita

this.deleteNotita(val.id)

只是试了一下,效果不错。我觉得自己很笨,谢谢你。
this.deleteNotita(val.id)