Componentes Core
Volver a clases
Desarrollo MóvilPrincipiante

Componentes Core

120 min
55 vistas

Uso de View, Text, Image, ScrollView y SafeAreaView en React Native.

View, Text, Image, ScrollView, SafeAreaView

Ejemplos de uso y estilos para cada componente core.

typescript
1import { View, Text, Image, ScrollView, SafeAreaView, StyleSheet } from 'react-native'
2
3// Card Component
4function Card({ title, description }: { title: string; description: string }) {
5  return (
6    <View style={styles.card}>
7      <View style={styles.cardHeader}>
8        <Text style={styles.cardTitle}>{title}</Text>
9      </View>
10      <View style={styles.cardBody}>
11        <Text style={styles.cardDescription}>{description}</Text>
12      </View>
13    </View>
14  )
15}
16
17// Typography Examples
18function Typography() {
19  return (
20    <View>
21      <Text style={styles.h1}>Título Principal</Text>
22      <Text style={styles.h2}>Subtítulo</Text>
23      <Text style={styles.body}>
24        Texto normal del párrafo con <Text style={styles.bold}>negrita</Text> y{' '}
25        <Text style={styles.link}>enlaces</Text>.
26      </Text>
27      <Text numberOfLines={2} ellipsizeMode="tail">
28        Texto muy largo que se truncará después de dos líneas...
29      </Text>
30    </View>
31  )
32}
33
34// Image Examples
35function ImageExamples() {
36  return (
37    <View style={styles.imageContainer}>
38      {/* Imagen desde URL */}
39      <Image
40        source={{ uri: 'https://picsum.photos/300/200' }}
41        style={styles.image}
42        resizeMode="cover"
43      />
44
45      {/* Imagen local */}
46      <Image
47        source={require('./assets/logo.png')}
48        style={styles.logo}
49      />
50
51      {/* Imagen con placeholder */}
52      <Image
53        source={{ uri: 'https://picsum.photos/300/201' }}
54        style={styles.image}
55        defaultSource={require('./assets/placeholder.png')}
56      />
57    </View>
58  )
59}
60
61// Screen with SafeAreaView
62function Screen() {
63  return (
64    <SafeAreaView style={styles.safeArea}>
65      <ScrollView style={styles.scrollView}>
66        <View style={styles.content}>
67          <Text style={styles.title}>Mi Pantalla</Text>
68          <Card title="Card 1" description="Descripción de la tarjeta 1" />
69          <Card title="Card 2" description="Descripción de la tarjeta 2" />
70          <ImageExamples />
71          <Typography />
72        </View>
73      </ScrollView>
74    </SafeAreaView>
75  )
76}
77
78const styles = StyleSheet.create({
79  safeArea: {
80    flex: 1,
81    backgroundColor: '#f5f5f5'
82  },
83  scrollView: {
84    flex: 1
85  },
86  content: {
87    padding: 16
88  },
89  title: {
90    fontSize: 28,
91    fontWeight: 'bold',
92    marginBottom: 20
93  },
94  card: {
95    backgroundColor: 'white',
96    borderRadius: 8,
97    marginBottom: 16,
98    shadowColor: '#000',
99    shadowOffset: { width: 0, height: 2 },
100    shadowOpacity: 0.1,
101    shadowRadius: 4,
102    elevation: 3
103  },
104  cardHeader: {
105    padding: 16,
106    borderBottomWidth: 1,
107    borderBottomColor: '#eee'
108  },
109  cardTitle: {
110    fontSize: 18,
111    fontWeight: '600'
112  },
113  cardBody: {
114    padding: 16
115  },
116  cardDescription: {
117    fontSize: 14,
118    color: '#666'
119  },
120  h1: {
121    fontSize: 32,
122    fontWeight: 'bold',
123    marginBottom: 8
124  },
125  h2: {
126    fontSize: 24,
127    fontWeight: '600',
128    marginBottom: 8
129  },
130  body: {
131    fontSize: 16,
132    lineHeight: 24,
133    marginBottom: 8
134  },
135  bold: {
136    fontWeight: 'bold'
137  },
138  link: {
139    color: '#007AFF',
140    textDecorationLine: 'underline'
141  },
142  imageContainer: {
143    gap: 16,
144    marginVertical: 16
145  },
146  image: {
147    width: '100%',
148    height: 200,
149    borderRadius: 8
150  },
151  logo: {
152    width: 100,
153    height: 100,
154    alignSelf: 'center'
155  }
156})