React Native中的Table vs Listview用于数据发布

时间:2018-07-31 06:43:11

标签: android listview react-native

你好,我是React Native的新手,我想建立一个出勤系统,老师可以选择学生并设置缺席或出席的状态。我想知道哪种方法更适合数据发布,因为我必须显示所有学生,并且默认值将设置为当前值。如果没有学生,我将设置“ A”,这是我的逻辑。

1 个答案:

答案 0 :(得分:1)

我认为ListView实际上是指FlatList或SectionList,因为ListView实际上已被弃用。因此,我将以Table vs FlatList的身份回答您的问题。 https://facebook.github.io/react-native/docs/flatlist

据我所知,react-native中实际上没有Table组件。您可以使用以下代码构建与表等效的东西:

<View>
    <View> 
        <Text>John</Text>
        <CheckboxButton />
    </View>
    <View> 
        <Text>James</Text>
        <CheckboxButton />
    </View> 
        <Text>Bob</Text>
        <CheckboxButton />
    </View>
</View> 

CheckBox不是React-Native的核心,您必须自己制作

但是!这是笨拙和令人作呕的,实际上不是最好的方法。也就是说,您可以将其缩小,并将<View>子级移至其自身的功能,例如

const student = (name) => {
        return (
            </View>
                <Text>{name}</Text>
                <CheckboxButton />
            </View>
        )
    }

然后映射对象中每个学生的姓名。但这又不能避免问题,而问题是,这一切都需要某种形式的CSS来保持其清洁,并在某处使用其自己的方法来映射并生成子对象student到父对象。


替代方法是ListView,因为它不是自定义组件,所以它更加井井有条,使用起来更简洁。它仍然有它奇怪的反应性怪癖,特别是在样式方面,但是优点是不必编写多种方法来构建表,而只需定义对象并将其解析为ListView。

例如:

const student = name => <View> <Text>{name}</Text> <checkBox /> </View>;

<FlatList
  data={this.props.students}
  renderItem={({item}) => student(items)}
/>

更加清洁,它带来了许多样式选择。 请记住,很多都是伪代码,我现在没有能力纠正正确的示例,但是这些都是基于我从自己的本机github存储库中提取的示例,因此它们应该足够接近功能。

祝一切顺利,并在评论中提出任何问题。