react native 自定义九宫格组件
需求:利用 <View/>、<Text/>、<Image/> 制作九宫格
1.建立 LKImageDemo.js
1 import React,{ Component} from 'react'; 2 import{ 3 View, 4 Image, 5 StyleSheet, 6 Text, 7 Dimensions 8 } from 'react-native'; 9 10 11 export default class LKImageDemo extends Component{ 12 constructor(){ 13 super(); 14 } 15 16 render(){ 17 return( 18 <View style={styles.container}> 19 {this._renderItem()} 20 </View> 21 ) 22 } 23 24 25 _renderItem(){ 26 //0.常量 27 let screenW=Dimensions.get('window').width;//获取屏幕的宽度 28 let cols=3,boxW=100,boxH=120;//三列,每个格子宽度100,高度120 29 let hMargin=(screenW-boxW*cols)/(cols+1);//每个盒子水平之间距离 30 let vMargin=20;//盒子之间垂直间距离 31 let dataArr=[ 32 { 33 "icon":"https://hrbrzyk.com/img/banner1.jpg", 34 "name":"单肩包" 35 }, 36 { 37 "icon":"https://hrbrzyk.com/img/banner1.jpg", 38 "name":"斜挎包" 39 }, 40 { 41 "icon":"https://hrbrzyk.com/img/banner1.jpg", 42 "name":"个性包" 43 }, 44 { 45 "icon":"https://hrbrzyk.com/img/banner1.jpg", 46 "name":"旅游包" 47 }, 48 { 49 "icon":"https://hrbrzyk.com/img/banner1.jpg", 50 "name":"钱包" 51 }, 52 { 53 "icon":"https://hrbrzyk.com/img/banner1.jpg", 54 "name":"麻布包" 55 } 56 ] 57 58 //1.组件数组 59 let itemArr=[]; 60 61 //2.遍历数组 62 for(let i=0;i<dataArr.length;i++){ 63 //2.1 取出单个数据 64 let data=dataArr[i]; 65 //2.2 创建组件妆容数组 66 itemArr.push( 67 <View key={i} style={{ 68 width:boxW, 69 height:boxH, 70 backgroundColor:'red', 71 justifyContent:'center', 72 alignItems:'center', 73 marginLeft:hMargin, 74 marginTop:vMargin 75 }}> 76 <Image 77 source={{uri:data.icon}} 78 style={{width:80,height:80}} 79 /> 80 <Text style={{marginTop:5}}>{data.name}</Text> 81 </View> 82 ) 83 } 84 //3.返回组件数组 85 return itemArr; 86 } 87 } 88 89 90 const styles=StyleSheet.create({ 91 container:{ 92 flex:1, 93 flexDirection:'row', 94 flexWrap:'wrap' 95 } 96 });
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 LKImageDemo from './components/LKImageDemo'; 28 29 30 const App: () => React$Node = () => { 31 32 return ( 33 <> 34 <StatusBar barStyle="dark-content" /> 35 <SafeAreaView style={styles.mainViewStyle}> 36 37 <LKImageDemo/> 38 </SafeAreaView> 39 </> 40 ); 41 }; 42 43 44 const styles=StyleSheet.create({ 45 mainViewStyle:{ 46 flex:1, 47 backgroundColor:'cyan', 48 } 49 }); 50 51 52 53 export default App;
3.结果如图:
分类:
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框架的用法!