【发布时间】:2020-12-04 09:56:27
【问题描述】:
我正在开发一个连接到 Firebase 实时数据库的 ToDo 应用。一切正常。我也可以将数据存储在 Firebase 数据库中,但问题是我无法从数据库中获取任何数据。我想在 ScrollView 中渲染数据,这样当我打开我的应用时,数据可以在 ScrollView 中显示。
Main.js
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
TextInput,
ScrollView,
TouchableOpacity
} from 'react-native';
import Note from './Note';
import firebase from './firebase';
export default class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
noteArray: [],
noteText: ''
}
}
render() {
let notes = () => {
firebase.database().ref(`todos`).on('value', function (snapshot) {
return <Note key={snapshot.val().key} keyval={snapshot.val().key} val={snapshot.val().note}
deleteMethod={() => this.deleteNote(key)}
/>
});
}
return (
<View style={styles.container}>
<View style={styles.header}>
<Text style={styles.headerText}>Todo</Text>
</View>
<ScrollView style={styles.scrollContainer}>
{notes}
</ScrollView>
<View style={styles.footer}>
<TextInput
style={styles.textInput}
onChangeText={(noteText) => this.setState({ noteText })}
value={this.state.noteText}
placeholder='Enter Task'
placeholderTextColor='white'
underlineColorAndroid='transparent'>
</TextInput>
</View>
<TouchableOpacity onPress={this.adTask.bind(this)} style={styles.addButton}>
<Text style={styles.addButtonText}>Add</Text>
</TouchableOpacity>
</View>
);
}
adTask() {
if (this.state.noteText) {
var date = new Date();
var database = firebase.database().ref('todos');
var key = database.push().key;
var todo = {
'date': date.getDay() +
'/' + (date.getMonth() + 1) +
'/' + date.getFullYear(),
'note': this.state.noteText,
key: key
}
database.child(key).set(todo);
this.setState({ noteArray: this.state.noteArray });
this.setState({ noteText: this.state.noteText });
this.setState({
noteText: this.state.noteText = ""
})
}
}
note.js
import React from 'react';
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
import { AntDesign } from '@expo/vector-icons';
export default class Main extends React.Component {
render() {
return (
<View key={this.props.keyval} style={styles.note}>
<Text style={styles.noteText}>{this.props.val.note}</Text>
<Text style={styles.noteDate}>{this.props.val.date}</Text>
<TouchableOpacity onPress={this.props.deleteMethod} style={styles.noteDelete}>
<Text style={styles.noteDeleteText}><AntDesign name="delete" size={24} color="black" /></Text>
</TouchableOpacity>
</View>
);
}
}
【问题讨论】:
标签: javascript reactjs firebase react-native expo