你好,我是React Native的新手,我想建立一个出勤系统,老师可以选择学生并设置缺席或出席的状态。我想知道哪种方法更适合数据发布,因为我必须显示所有学生,并且默认值将设置为当前值。如果没有学生,我将设置“ A”,这是我的逻辑。
答案 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存储库中提取的示例,因此它们应该足够接近功能。
祝一切顺利,并在评论中提出任何问题。