UNPKG

@uiw/react-native

Version:
64 lines (63 loc) 1.74 kB
import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; import { colors } from '../utils'; export default function BodyRow({ columns, record, style }) { return <View style={[styles.row, style]}> {columns.map((itm, idx) => { // row渲染的内容 let val = ''; if (itm.dataIndex.indexOf('.') > -1) { const firstKey = itm.dataIndex.split('.')[0]; const secondKey = itm.dataIndex.split('.')[1]; val = record[firstKey][secondKey]; } else { val = record[itm.dataIndex]; } // 是否省略多余文字 let textEllipsize = itm.ellipsis && itm.ellipsis ? { numberOfLines: 1, ellipsizeMode: 'tail' } : null; return <View key={itm.dataIndex} style={[columns.length - 1 === idx ? styles.firstLeftCell : styles.cell, itm.style ? itm.style : styles.titleFlex]}> {itm.render ? itm.render(record) : <Text selectable={true} {...textEllipsize} style={styles.content}> {val} </Text>} </View>; })} </View>; } const styles = StyleSheet.create({ row: { flexDirection: 'row', justifyContent: 'center', alignContent: 'center', borderBottomWidth: 1, borderRightWidth: 1, borderLeftWidth: 1, borderColor: colors.colorsPalette.dark70 }, cell: { borderRightWidth: 1, borderColor: colors.colorsPalette.dark70, flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }, firstLeftCell: { flexDirection: 'row', justifyContent: 'center', alignItems: 'center', borderRightWidth: 1, borderColor: '#FFF' }, content: { color: '#888888' }, titleFlex: { flex: 1 } });