react native 之 FlatList基本使用
常规用法,单行渲染数据
1.自定义CKFlatList.js 组件类
1 import React,{Component} from 'react'; 2 import { 3 Text, 4 StyleSheet, 5 FlatList, 6 TouchableOpacity, 7 Dimensions 8 } from 'react-native'; 9 10 const screenW=Dimensions.get('window').width;//获取屏幕宽度 11 12 export default class CKFlatList extends Component{ 13 constructor(){ 14 super(); 15 //模拟数据源 16 this.state={ 17 dataSource:[ 18 '第一行数据', 19 '第二行数据', 20 '第三行数据', 21 '第四行数据', 22 '第五行数据', 23 '第六行数据', 24 '第七行数据', 25 '第八行数据', 26 '第九行数据' 27 ] 28 } 29 } 30 render(){ 31 return( 32 <FlatList 33 data={this.state.dataSource} 34 renderItem={({item,index})=>this._renderRow(item,index)} 35 keyExtractor={(item,index)=>item+index} 36 /> 37 ) 38 } 39 _renderRow(item,index){ 40 return( 41 <TouchableOpacity 42 style={{ 43 width:screenW, 44 height:40, 45 borderBottomWidth:1, 46 borderBottomColor:'red', 47 justifyItems:'center', 48 alignItems:'center' 49 }} 50 > 51 <Text>{item}</Text> 52 </TouchableOpacity> 53 ) 54 } 55 } 56 57 const styles=StyleSheet.create({ 58 59 });
2.App.js引用组件
1 /** 2 * Sample React Native App 3 * https://github.com/facebook/react-native 4 * 5 * @format 6 * @flow strict-local 7 */ 8 9 import React from 'react'; 10 import { 11 SafeAreaView, 12 StyleSheet, 13 ScrollView, 14 View, 15 Text, 16 StatusBar, 17 } from 'react-native'; 18 19 import { 20 Header, 21 LearnMoreLinks, 22 Colors, 23 DebugInstructions, 24 ReloadInstructions, 25 } from 'react-native/Libraries/NewAppScreen'; 26 27 import CKFlatList from './components/CKFlatList' 28 29 30 const App: () => React$Node = () => { 31 32 return ( 33 <> 34 <StatusBar barStyle="dark-content" /> 35 <SafeAreaView style={styles.mainViewStyle}> 36 <CKFlatList/> 37 </SafeAreaView> 38 </> 39 ); 40 }; 41 42 43 const styles=StyleSheet.create({ 44 mainViewStyle:{ 45 flex:1, 46 backgroundColor:'#fff', 47 } 48 }); 49 50 51 52 export default App;
常规用法,多列渲染数据
1.创建自定义CKFlatList.js组件类
1 import React,{Component} from 'react'; 2 import { 3 Text, 4 StyleSheet, 5 FlatList, 6 TouchableOpacity, 7 Dimensions 8 } from 'react-native'; 9 10 const screenW=Dimensions.get('window').width; 11 12 export default class CKFlatList extends Component{ 13 constructor(){ 14 super(); 15 //模拟数据源 16 this.state={ 17 dataSource:[ 18 '第一行数据', 19 '第二行数据', 20 '第三行数据', 21 '第四行数据', 22 '第五行数据', 23 '第六行数据', 24 '第七行数据', 25 '第八行数据', 26 '第九行数据', 27 '第一行数据', 28 '第二行数据', 29 '第三行数据', 30 '第四行数据', 31 '第五行数据', 32 '第六行数据', 33 '第七行数据', 34 '第八行数据', 35 '第九行数据' 36 ] 37 } 38 } 39 render(){ 40 return( 41 <FlatList 42 data={this.state.dataSource} 43 renderItem={({item,index})=>this._renderRow(item,index)} 44 keyExtractor={(item,index)=>item+index} 45 style={{ 46 width:screenW, 47 flexDirection:'row', 48 flexWrap:'wrap' 49 }} 50 numColumns={4} 51 /> 52 ) 53 } 54 _renderRow(item,index){ 55 return( 56 <TouchableOpacity 57 style={{ 58 width:100, 59 height:200, 60 borderBottomWidth:1, 61 borderBottomColor:'red', 62 justifyItems:'center', 63 alignItems:'center' 64 }} 65 onPress={()=>alert('点击了第'+(index+1)+'行')} 66 > 67 <Text>{item}</Text> 68 </TouchableOpacity> 69 ) 70 } 71 } 72 73 const styles=StyleSheet.create({ 74 75 });
2.结果如图
分类:
React Native
标签:
React Native
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!