【发布时间】:2019-06-22 23:45:45
【问题描述】:
我是 React Native 的新手,我一直在尝试使用从 API 获取的数据动态创建的按钮数量创建一个视图。
我的一个问题是返回的数据没有任何我可以指出的名称,例如item.number。
首先我尝试做一个<Flatlist/>,但我没有得到我想要的设计,就像这样:
所以现在我正在尝试以不同的方式制作,但我总是收到错误:
无法读取未定义的属性“0”
data.json:
{
"sEcho":0,
"iTotalRecords":"75",
"iTotalDisplayRecords":"73",
"aaData":[
[
"1",
"1",
"Consumidor Final",
"999999990",
"",
"",
null,
", ",
"21110000",
"1",
"1",
"1"
],
[
"2",
"1000",
"xxxxxx",
"xxxxx",
"",
"",
null,
", ",
"xxxx",
"15",
"1",
"1"
]
]
}
我是如何获取数据的;
getClientes = async (token, opcao, search, pag, numRows) => {
var url = "https://xxxx/xxxx/xxx/xxxx/xxx/tabelas/clientes?_token=" + token + "&opcao= " + opcao + "&search=&pag=&numRows=" + numRows;
fetch(url)
.then((response) => response.json())
.then((responseJson) => {
this.setState({
dataSource: responseJson.aaData,
isLoading: false,
numRows: responseJson.iTotalDisplayRecords
})
console.log(responseJson.iTotalDisplayRecords + " total");
console.log("CLIENTES: " + responseJson.aaData[0][2]);
console.log(this.state.dataSource[0][2]);
})
.catch((error) => {
console.log(error);
})
}
我如何渲染按钮:
renderClientes = (numRows, data) => {
console.log(numRows + "azxcvb");
console.log(data.length + "render Clientes");
const views = [];
for (let i = 0; i <= numRows; i++) {
for (let j = 0; j <= 11; j++) {
views.push(
<TouchableOpacity style={{ flex: 1, flexDirection: 'row', marginBottom: 3 }} key={i}>
<View style={{ flex: 1, justifyContent: 'center', marginLeft: 5 }}>
<Text style={{ fontSize: 18, color: 'green' }}>
{data[i][j]}
</Text>
</View>
</TouchableOpacity>
);
}
}
return views;
}
然后:
render() {
return (
...
(this.state.numRows != 0) ? this.renderClientes(this.state.numRows, this.state.dataSource) : null)
}
如何解决我的问题?如果有更简单的方法可以做到这一点,那是什么?
【问题讨论】:
标签: reactjs react-native