คอมโพเนนต์หลักของ React Native เทียบกับ DOM บนเว็บ
จับคู่ View/Text/Image/ScrollView กับองค์ประกอบที่สอดคล้องกันใน DOM และทำความเข้าใจรูปแบบบริดจ์
คอมโพเนนต์หลักของ React Native เทียบกับ DOM บนเว็บ เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใด React Native จึงไม่มี HTML
React Native แสดงผลเป็นคอมโพเนนต์ส่วนติดต่อผู้ใช้เนทีฟของ iOS และ Android ไม่ใช่ DOM ของเบราว์เซอร์ จึงไม่มี <div> <p> หรือ <img> — แต่ละแพลตฟอร์มมีองค์ประกอบพื้นฐานแบบเนทีฟของตนเอง
View — เทียบเท่ากับ div
View เป็นคอนเทนเนอร์เลย์เอาต์พื้นฐานที่สุดใน React Native โดยแมปไปยัง UIView บน iOS และ android.view.View บน Android ให้คิดว่าเป็น <div> ที่ไม่สามารถมีข้อความโดยตรงได้
import { View, StyleSheet } from 'react-native';
function Card() {
return (
<View style={styles.card}>
{/* children go here */}
</View>
);
}
const styles = StyleSheet.create({ card: { padding: 16, borderRadius: 8 } });Text — เทียบเท่ากับ p/span
Text จำเป็นสำหรับข้อความที่มองเห็นได้ทุกชนิด ต่างจากเว็บ คุณไม่สามารถใส่สตริงไว้ภายใน View โดยตรงได้ — ต้องห่อไว้ใน <Text>
import { View, Text } from 'react-native';
function Greeting() {
return (
<View>
<Text style={{ fontSize: 24, fontWeight: 'bold' }}>Hello!</Text>
<Text>Welcome to React Native.</Text>
</View>
);
}Image — เทียบเท่ากับ img
Image ใช้แสดงรูปภาพ ใช้พร็อพ source ร่วมกับ require() สำหรับทรัพยากรในเครื่อง หรือใช้ออบเจ็กต์ { uri: '...' } สำหรับรูปภาพจากเครือข่าย
import { Image } from 'react-native';
// Local asset:
<Image source={require('./assets/logo.png')} style={{ width: 100, height: 100 }} />
// Network image (must provide dimensions):
<Image source={{ uri: 'https://example.com/photo.jpg' }} style={{ width: 200, height: 150 }} />ScrollView — เทียบเท่ากับ overflow:scroll
ScrollView เป็นคอนเทนเนอร์ที่เลื่อนได้ ต่างจากเว็บ คุณต้องใช้คอมโพเนนต์นี้อย่างชัดเจน — View ไม่สามารถเลื่อนได้ สำหรับรายการยาว ให้เลือกใช้ FlatList
import { ScrollView, Text } from 'react-native';
function Article({ paragraphs }) {
return (
<ScrollView>
{paragraphs.map((p, i) => <Text key={i}>{p}</Text>)}
</ScrollView>
);
}FlatList — รายการแบบเวอร์ชวลไลซ์
FlatList จะแสดงผลเฉพาะรายการที่มองเห็น และนำรายการที่อยู่นอกหน้าจอกลับมาใช้ซ้ำ — จำเป็นต่อประสิทธิภาพเมื่อทำงานกับชุดข้อมูลขนาดใหญ่
import { FlatList, Text, View } from 'react-native';
function UserList({ users }) {
return (
<FlatList
data={users}
keyExtractor={u => u.id}
renderItem={({ item }) => <Text>{item.name}</Text>}
/>
);
}TouchableOpacity — เทียบเท่ากับปุ่ม
TouchableOpacity (และ Pressable ใน RN รุ่นใหม่กว่า) เพิ่มการตอบสนองต่อการสัมผัสให้กับวิวใดก็ได้ พร็อพ onPress ใช้จัดการการแตะ
import { TouchableOpacity, Text } from 'react-native';
function Button({ onPress, title }) {
return (
<TouchableOpacity onPress={onPress} activeOpacity={0.7}>
<Text>{title}</Text>
</TouchableOpacity>
);
}TextInput — เทียบเท่ากับ input
TextInput คือช่องรับข้อมูลที่ควบคุมด้วยสถานะ รองรับ value onChangeText placeholder และชนิดแป้นพิมพ์
import { TextInput, useState } from 'react-native';
function SearchBar() {
const [query, setQuery] = useState('');
return (
<TextInput
value={query}
onChangeText={setQuery}
placeholder="Search..."
keyboardType="default"
/>
);
}ActivityIndicator — วงล้อโหลด
ActivityIndicator คือวงล้อโหลดแบบเนทีฟ บน iOS เป็นวงล้อหมุนทรงกลม ส่วนบน Android เป็นตัวแสดงความคืบหน้าแบบวงกลมตามแนวทาง Material
import { ActivityIndicator, View } from 'react-native';
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<ActivityIndicator size="large" color="#4f46e5" />
</View>SafeAreaView
SafeAreaView เพิ่มระยะเว้นสำหรับรอยบากของอุปกรณ์ แถบสถานะ และตัวบ่งชี้หน้าหลักโดยอัตโนมัติบน iOS และ Android
import { SafeAreaView } from 'react-native-safe-area-context';
export default function App() {
return (
<SafeAreaView style={{ flex: 1 }}>
<MyScreen />
</SafeAreaView>
);
}Modal
Modal แสดงเลเยอร์ซ้อนทับด้านบนของแอป พร็อพ visible ควบคุมว่าจะแสดงเลเยอร์นี้หรือไม่
import { Modal, View, Text } from 'react-native';
<Modal visible={showModal} animationType="slide" transparent={true}>
<View style={styles.overlay}>
<View style={styles.dialog}>
<Text>Are you sure?</Text>
</View>
</View>
</Modal>ตรวจสอบอย่างรวดเร็ว
คุณต้องใช้คอมโพเนนต์ React Native ใดเพื่อแสดงข้อความใด ๆ บนหน้าจอ
สรุปทบทวน
React Native จับคู่แนวคิดจากเว็บเข้ากับคอมโพเนนต์เนทีฟ ได้แก่ View (div), Text (p), Image (img), ScrollView, FlatList (รายการแบบเวอร์ชวลไลซ์), TextInput (input) และ TouchableOpacity (ปุ่ม) ใช้ SafeAreaView สำหรับเลย์เอาต์รากเสมอ
คำถามที่พบบ่อย
บทเรียน “คอมโพเนนต์หลักของ React Native เทียบกับ DOM บนเว็บ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คอมโพเนนต์หลักของ React Native เทียบกับ DOM บนเว็บ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คอมโพเนนต์หลักของ React Native เทียบกับ DOM บนเว็บ”
จับคู่ View/Text/Image/ScrollView กับองค์ประกอบที่สอดคล้องกันใน DOM และทำความเข้าใจรูปแบบบริดจ์ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คอมโพเนนต์หลักของ React Native เทียบกับ DOM บนเว็บ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คอมโพเนนต์หลักของ React Native เทียบกับ DOM บนเว็บ
- การตกแต่งด้วย StyleSheet API และ Flexbox
- การนำทางด้วย Expo Router
- การเข้าถึง API ของอุปกรณ์: กล้อง ตำแหน่ง และการแจ้งเตือนแบบพุช