我在我的项目中使用react-native-table-component,接受的数组数据的格式应如下所示:
tableData: [
['1', '2', '3',],
['a', 'b', 'c',],
['1', '2', '3',],
]
我试图进行地图绘制。但是我不知道为什么我不能以这种方式格式化数组。
我尝试了以下代码:
this.state.tableData.push('1');
this.state.tableData.push('2');
this.state.tableData.push('3');
但是似乎数组中的数据格式是这样的:
tableData: [1,2,3]
将从Firebase数据库中获取数据的方式如下:
firebase.database().ref('Budgets/id/Expenses').once("value", function(snapshot) {
snapshot.forEach(function(data) {
this.state.tableData.push(data.val().name);
this.state.tableData.push(data.val().amount);
this.state.tableData.push(data.val().frequency);
})
}).catch((error) => {
console.log(error);
});
有什么想法或建议想出这种数组格式吗?
解决方案:
let roww = [];
let that = this;
firebase.database().ref('Budgets/id/Expenses').once("value", function(snapshot) {
snapshot.forEach(function(data) {
roww.push([data.val().name,data.val().amount,data.val().frequency]);
that.setState({tableData: roww});
})
}).catch((error) => {
console.log(error);
});
答案 0 :(得分:0)
我不确定是什么问题。.如果可接受的格式是双向数组,那么..构建它。
let firstRow = [1,2,3]
this.state.tableData = [firstRow]
按动
this.state.tableData[0].push(1)
更多细节将有所帮助
编辑:
尝试执行此操作(请注意this.state.tableData
必须初始化)
snapshot.forEach(function(data) {
this.state.tableData.push([data.val().name,data.val().amount,data.val().frequency]);
})
答案 1 :(得分:0)
这是一个可行的示例。我认为这将有助于解决您的问题。检查componentDidmount()
import React, { Component } from 'react';
import { StyleSheet, View } from 'react-native';
import { Table, Row, Rows } from 'react-native-table-component';
export default class ExampleOne extends Component {
constructor(props) {
super(props);
this.state = {
tableHead: ['Head', 'Head2', 'Head3', 'Head4'],
tableData: [
['1', '2', '3', '4'],
['a', 'b', 'c', 'd'],
['1', '2', '3', '456\n789'],
['a', 'b', 'c', 'd']
]
}
}
componentDidMount(){
var myarray=new Array(3)
var k= 1
var j= 2
var l= 9
for (var i=0; i <3; i++)
myarray[i]=[j,k,l]
this.setState({tableData:myarray})
}
render() {
const state = this.state;
return (
<View style={styles.container}>
<Table borderStyle={{borderWidth: 2, borderColor: '#c8e1ff'}}>
<Row data={state.tableHead} style={styles.head} textStyle={styles.text}/>
<Rows data={state.tableData} textStyle={styles.text}/>
</Table>
</View>
)
}
}
const styles = StyleSheet.create({
container: { flex: 1, padding: 16, paddingTop: 30, backgroundColor: '#fff' },
head: { height: 40, backgroundColor: '#f1f8ff' },
text: { margin: 6 }
})
您也可以在这里"RGB" mode
进行测试