Ваши проблемы были только при использовании data: []
в состоянии вместо data1: []
. Однако я нашел еще несколько улучшений в вашем коде, и ниже приведены мои предложения
Проблемы:
1) данные1 используются при рендеринге, но не инициализируются в состоянии
2) объект стилей используется как строка вместо объекта
3) Не проблема, но вам не нужно связывать _submit
, так как это уже функция стрелки
import React, { Component } from 'react';
import { StyleSheet, View, Button } from 'react-native';
import ReactTable from 'react-table';
import firebase from 'firebase';
const firebaseConfig = {};
firebase.initializeApp(firebaseConfig);
const COLUMNS = [
{
Header: 'email',
accessor: 'email',
},
{
Header: 'password',
accessor: 'password',
},
];
export default class Form1 extends Component {
state = {
data: [],
columns: COLUMNS,
};
componentDidMount() {
const data = [];
const query = firebase.database().ref('/users');
query.once('value').then(snapshot => {
snapshot.forEach((childSnapshot, index) => {
const singleObj = {
email: childSnapshot.val().email,
password: childSnapshot.val().password,
};
data.push(singleObj);
this.setState({ data });
});
});
}
_submit = () => {
console.log('data1:', this.state.data);
}
render() {
const { data, columns } = this.state;
return (
<View style={styles.container}>
{data.length > 0 && <ReactTable data={data} columns={columns} />}
<Button title="Submit" onPress={this._submit} />
</View>
);
}
}
const styles = StyleSheet.create({
container: { flex: 1, padding: 16, paddingTop: 30, backgroundColor: '#fff' },
head: { height: 40, backgroundColor: '#f1f8ff' },
text: { margin: 6 },
});