api - 如何为巴士反应原生创建座位布局
问题描述
我想为公共汽车创建座位布局。所以,我找到了这个链接,它显示了如何创建座位图。
所以以下是我从 API 得到的响应
{"seats":[{"width":1,"fare":"","zIndex":0,"number":"A1","type":"A1","serviceTaxAmount":"0","convenience_charge":"0","commission":"","operatorServiceChargeAbsolute":"","operatorServiceChargePercent":"0","totalFareWithTaxes":"","ladiesSeat":"","bookedBy":"","ac":"true","sleeper":"","serviceTaxPer":"0","available":"","length":1,"id":"A1","seatid":"A1","row":0,"column":1},{"width":1,"fare":"1000","zIndex":0,"number":"A3","type":"A3","serviceTaxAmount":"0","convenience_charge":"0","commission":"","operatorServiceChargeAbsolute":"","operatorServiceChargePercent":"0","totalFareWithTaxes":"1000","ladiesSeat":"","bookedBy":"","ac":"true","sleeper":"","serviceTaxPer":"0","available":"1","length":1,"id":"A3","seatid":"A3","row":2,"column":1}]}
这就是我到目前为止所做的
componentDidMount() {
return fetch(seat_url)
.then((response) => response.json())
.then((responseJson) => {
this.setState({
isLoading: false,
row: responseJson.seats.row,
column: responseJson.seats.column,
}, function() {
});
})
.catch((error) => {
console.error(error);
});
}
那么如何在 ROWS 和 COLS 附近使用上述响应,因为行和列不会是恒定的,它将在每一行和每一列上都是动态的。在上述链接提供的示例中,列和行是固定的。我想动态访问它们。
解决方案
使用表格组件并创建行、列。在包下面 安装 npm install react-native-table-component
import { Table, TableWrapper, Row, Rows, Col, Cols, Cell } from 'react-native-table-component';
let myData1= [];
const rowData1= [];
const type_data= [];
let row_length=[];
let col_length=[];
let type_length=[];
let row_count,col_count,a,b,c,d;
componentDidMount() {
return fetch(seat_url)
.then((response) => response.json())
.then((responseJson) => {
let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
var resultresponse = responseJson.result;
for (var i in resultresponse) {
var seatresponse = resultresponse[i].seats;
for(var j in seatresponse)
{
myData1.push(seatresponse[j]);
row_length.push(seatresponse[j].row);
col_length.push(seatresponse[j].column);
type_length.push(seatresponse[j].type);
rowData1.push(`${seatresponse[j].row},${seatresponse[j].column}`);
}
}
row_count = Array.from(new Set(row_length));
col_count = Array.from(new Set(col_length));
a = row_count.length.toString();
b = col_count.length.toString();
c = row_length.length.toString();
d = col_length.length.toString();
})
}
render() {
const state = this.state;
const tableData1 = [];
const tableData = [];
for (let i = 1; i <= b; i ++) {
rowData = [];
rowData2 = [];
// 如果表行和列与您的响应行和列匹配,则推送数据,否则分配为 NULL。for (let j = 0; j < a; j ++) { rowData.push( ${j},${i}
); for (let k = 0; k <= rowData1.length && k<=type_length.length; k ++) { if( ${j},${i}
=== rowData1[k]) { rowData[rowData.indexOf( ${j},${i}
)] = myData1[k] ; }
}
for (let l = 0; l <= rowData1.length; l ++) {
if(`${j},${i}` != rowData1[l])
{
rowData[rowData.indexOf(`${j},${i}`)] = 'NULL';
}
}
}
tableData.push(rowData);
}
return (
<View style={styles.MainContainer}>
<Table borderStyle={{borderColor: 'transparent'}} >
<Row style={styles.head} textStyle={styles.text}/>
{
tableData.map((rowData, index) => (
<TableWrapper key={index} style={styles.row}>
{
rowData.map((cellData, cellIndex) => (
<Cell style={{backgroundColor: 'orange', margin:5, height:40, width:40}} key={cellIndex} data={cellData.type} />
))
}
</TableWrapper>
))
}
</Table>
</View>
);
}
推荐阅读
- c++ - c++ 中 unsigned char b[2] 的初始值是多少?
- javascript - 命令处理程序 - 未定义消息
- mysql - 使用 JOIN 进行慢速 SELECT 优化
- javascript - 如何知道单击按钮时在动态生成的选项卡集中选择并激活了哪个选项卡
- latex - LaTeX - 水平线上方不需要的空间
- node.js - 在 express.js 中间件函数中无法接收错误
- visual-studio - 使用 Nuget 部署一个自包含的 React 应用程序
- java - 如何找出 JSONDeserializer 的启动和完成时间?
- r - rlang::eval_tidy 调用自定义数据对象
- ansible - 如何处理带有条件的_items