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