Настройка макета таблицы в React Native

Я перехожу к проекту React в React Native и нуждаюсь в помощи при настройке сетки в React Native. Я хочу настроить 5-col на x-row (количество строк может меняться). Я играл с пакетом response-native-tableview-simple, но я не могу указать диапазон ячейки. Я также попробовал пакет response-native-flexbox-grid, который я могу настроить столбцы, но я все еще не могу установить ширину диапазона для определенной ячейки. Интересно, есть ли что-нибудь, что я могу использовать.

Для справки, я хотел бы, чтобы мой стол выглядел примерно так:

     |Col 1|Col 2|Col 3|Col 4|Col 5|
     |------------------------------
Row 1|     Text        | Yes |  No | 
     |------------------------------
Row 2|     Text        | Yes |  No | 
     |------------------------------
Row 3|     Text        |  Dropdown | 

Ответ 1

Вы можете сделать это без каких-либо пакетов. Если каждая строка точно такая же, как и следующая, следует решить вашу проблему;

export default class Table extends Component {
    renderRow() {
        return (
            <View style={{ flex: 1, alignSelf: 'stretch', flexDirection: 'row' }}>
                <View style={{ flex: 1, alignSelf: 'stretch' }} /> { /* Edit these as they are your cells. You may even take parameters to display different data / react elements etc. */}
                <View style={{ flex: 1, alignSelf: 'stretch' }} />
                <View style={{ flex: 1, alignSelf: 'stretch' }} />
                <View style={{ flex: 1, alignSelf: 'stretch' }} />
                <View style={{ flex: 1, alignSelf: 'stretch' }} />
            </View>
        );
    }

    render() {
        const data = [1, 2, 3, 4, 5];
        return (
            <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
            {
                data.map((datum) => { // This will render a row for each data element.
                    return this.renderRow();
                })
            }
            </View>
        );
    }
}

Ответ 2

Просмотрев здесь ответы, я обнаружил очень большую библиотеку, которая ведет себя так же, как таблицы Bootstrap. Я нашел макет с React Native очень сложным, но эта библиотека обеспечивает предсказуемые результаты макета.

Реагировать на родную легкую сетку

Я согласен с тем, что базовые таблицы flex должны быть встроены в React Native, но до тех пор, пока они не будут работать с этой библиотекой.

Ответ 3

Если вам нужен общий компонент Table, чтобы получить такой вывод:

enter image description here

import React from 'react';

import { Text, View } from 'react-native'

export default class Table extends React.Component {

    renderRow(row) {
        return (
            <View style={{ flex: 1, flexDirection: 'row', padding: 10 }}>
                {
                    row.map((column) => {
                        return (
                            this.renderColumn(column)
                        )
                    })
                }
            </View>
        );
    }

    renderColumn(column) {
        return (
            <View style={{
                flex: 1, flexDirection: 'column', alignItems: 'center', justifyContent: 'center'
            }}>
                {
                    column.map((item) => {
                        return (
                            <View style={{ flex: 1, flexDirection: "row" }}>
                                <Text style={{ flex: 1, alignSelf: 'center' }} size={16}>{item}</Text>
                            </View>
                        )
                    })
                }
            </View>
        )
    }

    render() {
        const data = this.props.dataSource;
        return (
            <View style={{
                alignSelf: 'stretch',
                flexDirection: 'column',
                alignItems: 'center',
            }}>
                {
                    data.map((row) => {
                        return this.renderRow(row);
                    })
                }
            </View>
        );
    }
}

В главном файле пользовательского интерфейса вы можете отобразить таблицу таким образом:

render() {
    const dataSource = [
        [["Row1 Column 1 Item0"], ["Row1 Column1 Item0 "]],
        [["Row2 Column 1 Item0"], ["Row2 Column2 Item0", "Row2 Column2 Item1"]],
    ]
    return (
        <UWTable dataSource={dataSource}/>
    )
}

Ответ 4

Хотя это старый пост, но я искал что-то подобное, заданное в вопросе,

Я и мозговой штурм havoked Интернета для решения и лучшим решения, которое я получил в том, чтобы импортировать пакет реагировать-нативные табличный компонент к моему проекту и подготовить достойный макет таблицы для моего приложения для отображения данных. Может быть, гораздо больше людей разберутся, как это сделать, и я могу рекомендовать эту ссылку на все ваши ответы: Эта ссылка - ссылка на установщик пакета npm, в которой есть объяснение всего кода и примеры.