React Native鸿蒙跨平台列表类页面跨端开发实践,完成自定义组件封装、Props属性传值、数据驱动的列表渲染、原生组件组合、Flex布局设计、跨端屏幕适配等
本文解析了一个基于React Native实现的科技新闻收藏列表组件,采用清晰的组件分层架构(头部区域+内容列表),通过FavoriteItem组件封装实现高度复用性。数据结构设计完整且可扩展,包含ID、标题、分类等关键字段。响应式布局基于Dimensions API适配不同屏幕,列表交互采用垂直滚动模式优化用户体验。该实现体现了React Native跨端开发优势,支持Android、iOS和鸿
本文深入分析一个基于React Native实现的科技新闻收藏列表组件,从组件架构、数据设计、交互模式到性能优化等多个维度进行技术解读,重点探讨在内容列表类应用开发中的最佳实践和鸿蒙系统下的跨端适配策略。
组件分层
该应用采用了极简但高效的架构设计,形成了清晰的内容展示层次:
const TechNewsFavorites: React.FC = () => {
return (
<SafeAreaView style={styles.container}>
{/* 头部品牌标识区域 */}
<View style={styles.header}>
<Text style={styles.title}>收藏列表</Text>
<Text style={styles.subtitle}>您收藏的科技新闻</Text>
</View>
{/* 内容展示主体区域 */}
<ScrollView contentContainerStyle={styles.content}>
<View style={styles.newsList}>
{/* 新闻项列表渲染 */}
{FAVORITE_NEWS.map((news) => (
<FavoriteItem key={news.id} news={news} />
))}
</View>
</ScrollView>
</SafeAreaView>
);
};
这种架构设计体现了React的核心思想:组件化、数据驱动和声明式UI。每个层次都有明确的职责,代码结构清晰且易于维护。
组件封装
FavoriteItem组件展示了优秀的列表项组件设计理念:
const FavoriteItem: React.FC<{ news: any }> = ({ news }) => {
return (
<TouchableOpacity style={styles.newsItem}>
{/* 新闻封面图片 */}
<Image source={{ uri: news.image }} style={styles.newsImage} />
{/* 新闻内容区域 */}
<View style={styles.newsContent}>
{/* 标题 */}
<Text style={styles.newsTitle}>{news.title}</Text>
{/* 元信息标签 */}
<View style={styles.newsMeta}>
<Text style={styles.categoryTag}>{news.category}</Text>
<Text style={styles.timeTag}>{news.time}</Text>
</View>
</View>
</TouchableOpacity>
);
};
组件设计特点:
- 单一职责: 专注于新闻项的展示和交互
- 清晰的Props接口: 明确的输入契约,易于理解和使用
- 可复用性: 可以在收藏列表、历史记录、搜索结果等场景重用
- 可测试性: 独立的组件便于单元测试和集成测试
新闻数据
应用采用了精心设计的数据结构来支持新闻收藏展示:
const FAVORITE_NEWS = [
{
id: 1,
title: '人工智能在医疗领域的突破性进展',
category: '科技',
time: '2小时前',
image: 'https://picsum.photos/300/200?random=1'
},
{
id: 2,
title: '新能源汽车市场迎来爆发式增长',
category: '商业',
time: '4小时前',
image: 'https://picsum.photos/300/200?random=2'
},
{
id: 3,
title: '量子计算技术取得重大突破',
category: '科技',
time: '昨天',
image: 'https://picsum.photos/300/200?random=3'
},
// 更多新闻数据...
];
数据结构优势:
- 完整性: 包含ID、标题、分类、时间、图片等完整信息
- 可扩展性: 易于添加新的字段和属性,如作者、摘要、阅读量等
- 一致性: 统一的数据结构便于处理和展示
- 时间语义: 相对时间格式"2小时前"符合用户阅读习惯
- 分类标签: 支持按分类进行筛选和展示
响应式
组件采用了基于Dimensions API的智能响应式布局:
const { width } = Dimensions.get('window');
const styles = StyleSheet.create({
newsItem: {
flexDirection: 'row',
backgroundColor: '#ffffff',
borderRadius: 12,
marginBottom: 12,
padding: 12,
// 跨平台阴影效果
elevation: 2,
shadowColor: '#000',
shadowOffset: { width: 0, height: 1 },
shadowOpacity: 0.1,
shadowRadius: 2,
overflow: 'hidden',
},
newsImage: {
width: 100,
height: 80,
borderRadius: 8,
},
newsContent: {
flex: 1,
marginLeft: 12,
justifyContent: 'space-between',
},
newsTitle: {
fontSize: 16,
fontWeight: 'bold',
color: '#333',
lineHeight: 22,
},
newsMeta: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
},
categoryTag: {
backgroundColor: '#e3f2fd',
color: '#1976d2',
paddingHorizontal: 8,
paddingVertical: 4,
borderRadius: 4,
fontSize: 12,
fontWeight: '500',
},
timeTag: {
color: '#999',
fontSize: 12,
}
});
这种布局计算确保了在不同屏幕尺寸下都能保持一致的视觉比例和良好的阅读体验。
列表交互
<ScrollView
contentContainerStyle={styles.content}
showsVerticalScrollIndicator={true}
indicatorStyle="black"
>
{/* 新闻列表 */}
</ScrollView>
列表交互特点:
- 垂直滚动: 符合用户浏览新闻的习惯
- 滚动指示器: 黑色滚动条与整体设计协调
- 内容容器: 适当的内边距提供舒适的阅读边距
数据结构设计简洁明了,包含了新闻的唯一标识、标题、分类、时间和图片链接。使用外部图片服务(picsum.photos)生成占位图片是一个实用的开发技巧,既方便了原型开发,又能在不同平台上保持一致的视觉效果。
响应式布局
const { width } = Dimensions.get('window');
通过 Dimensions.get('window') 获取屏幕宽度,为后续的响应式布局计算提供基础。虽然在当前实现中没有直接使用这个值进行动态计算,但这种模式为后续的布局调整(如适配不同屏幕尺寸的新闻卡片宽度)预留了扩展空间。
新闻项布局
<TouchableOpacity style={styles.newsItem}>
<Image source={{ uri: news.image }} style={styles.newsImage} />
<View style={styles.newsContent}>
<Text style={styles.newsTitle}>{news.title}</Text>
<View style={styles.newsMeta}>
<Text style={styles.categoryTag}>{news.category}</Text>
<Text style={styles.timeTag}>{news.time}</Text>
</View>
</View>
</TouchableOpacity>
新闻项采用了垂直堆叠的布局结构,顶部是新闻图片,下方是新闻内容。这种布局方式符合用户的阅读习惯,也是新闻类应用的常见设计模式。通过 TouchableOpacity 包裹整个新闻项,实现了点击交互效果,提升了用户体验。
本次解析的科技新闻收藏页代码,是一套典型的React Native列表类页面跨端开发实践,涵盖了React Native开发的核心技术点:自定义组件封装、Props属性传值、数据驱动的列表渲染、原生组件组合、Flex布局设计、跨端屏幕适配等。代码的设计思路充分体现了React Native“一次编写、多端运行”的核心优势,基于React的组件化与声明式编程思想,实现了业务逻辑与视图渲染的解耦,同时所有核心组件与API均已实现鸿蒙平台的桥接适配,可直接基于React Native for HarmonyOS实现Android、iOS、鸿蒙三大平台的兼容运行。
真实演示案例代码:
// app.tsx
import React, { useState } from 'react';
import { SafeAreaView, View, Text, StyleSheet, TouchableOpacity, ScrollView, Image, Dimensions } from 'react-native';
// 图标库
const ICONS = {
home: '🏠',
user: '👤',
message: '✉️',
heart: '❤️',
comment: '💬',
share: '📤',
more: '⋮',
close: '✕',
add: '➕',
edit: '✏️',
delete: '🗑️',
star: '⭐',
bookmark: '🔖',
like: '👍',
dislike: '👎',
favorite: '💖',
gallery: '🖼️',
camera: '📷',
video: '🎥',
play: '▶️',
pause: '⏸️',
forward: '⏭️',
backward: '⏮️',
settings: '⚙️',
info: 'ℹ',
search: '🔍',
filter: '🔍',
sort: '↕️',
menu: '☰',
notification: '🔔',
gift: '🎁',
celebration: '🎉',
smile: '😊',
sad: '😢',
angry: '😠',
surprised: '😲',
thinking: '🤔',
thumbs_up: '👍',
thumbs_down: '👎',
clap: '👏',
wave: '👋',
heart_eyes: '😍',
laughing: '😂',
crying: '😭',
angry_face: '😡',
neutral: '😐',
confused: '😕',
wink: '😉',
sunglasses: '😎',
money_mouth: '🤑',
thinking_face: '🤔',
sleeping: '😴',
dizzy: '😵',
sunglasses_face: '😎',
heart_face: '🥰',
kiss: '😘',
hug: '🤗',
pray: '🙏',
handshake: '🤝',
high_five: '🙌',
peace: '✌️',
ok: '👌',
victory: '✌️',
rock: '🤟',
call_me: '🤙',
point_up: '☝️',
point_down: '👇',
point_left: '👈',
point_right: '👉',
raised_hand: '✋',
raised_fist: '✊',
victory_hand: '✌️',
metal: '🤘',
vulcan: '🖖',
wave_hand: '👋',
clapping_hands: '👏',
open_hands: '👐',
palms_up: '🤲',
handshake_hands: '🤝',
pray_hands: '🙏',
fold_hands: ' folded_hands',
writing_hand: '✍️',
nail_care: '💅',
selfie: '🤳',
flexed_biceps: '💪',
muscle: '💪',
selfie_tone1: ' selfie_tone1',
selfie_tone2: ' selfie_tone2',
selfie_tone3: ' selfie_tone3',
selfie_tone4: ' selfie_tone4',
selfie_tone5: ' selfie_tone5',
selfie_tone6: ' selfie_tone6',
news: '📰',
article: '📄',
headline: '📢',
read: '📖',
subscribe: '🔔',
trending: '📈',
breaking: '🚨',
politics: '🏛️',
business: '💼',
tech: '💻',
science: '🔬',
health: '🏥',
sports: '⚽',
entertainment: '🎬',
lifestyle: '🌟',
travel: '✈️',
food: '🍽️',
nature: '🌿',
weather: '🌤️',
calendar: '📅',
clock: '⏰',
location: '📍',
tag: '🏷️',
category: '📚',
author: '✍️',
views: '👁️',
comments: '💬',
save: '💾',
print: '🖨️',
related: '🔗',
next: '➡️',
prev: '⬅️',
back: '🔙',
forward: '🔜',
reload: '🔄',
refresh: '🔃',
expand: '🔍',
minimize: '_compress',
fullscreen: '⛶',
exit_fullscreen: '⛶',
volume_up: '🔊',
volume_down: '🔉',
volume_mute: '🔇',
brightness_high: '☀️',
brightness_low: '🔅',
dark_mode: '🌙',
light_mode: '☀️',
font_increase: '🔠',
font_decrease: '🔡',
text_align_left: '◀️',
text_align_center: '⏺️',
text_align_right: '▶️',
text_align_justify: '▭▭',
bold: ' đậm',
italic: ' nghiêng',
underline: ' gạch chân',
highlight: ' marker',
link: '🔗',
quote: '❝',
code: '💻',
list_bulleted: '•',
list_numbered: '1.',
checklist: '☑️',
attachment: '📎',
image: '🖼️',
video: '🎬',
audio: '🎵',
document: '📄',
pdf: '📑',
excel: '📊',
word: '📝',
powerpoint: '📽️',
archive: '📦',
zip: '🤐',
rar: ' zipper',
file: '📄',
folder: '📁',
drive: '💾',
cloud: '☁️',
download: '⬇️',
upload: '⬆️',
sync: '🔄',
backup: '💾',
restore: '🔙',
recovery: '🔧',
settings: '⚙️',
preferences: '⚙️',
options: '⚙️',
customize: '🎨',
theme: '🎨',
appearance: '🎨',
layout: '📐',
design: '🎨',
color: '🎨',
background: '🖼️',
wallpaper: '🖼️',
privacy: '🔒',
security: '🛡️',
account: '👤',
profile: '👤',
sign_in: '🔑',
sign_out: '🚪',
register: '📝',
forgot_password: '❓',
reset_password: '🔄',
verification: '✅',
confirm: '✅',
cancel: '❌',
ok: '✅',
yes: '✅',
no: '❌',
accept: '✅',
decline: '❌',
agree: '✅',
disagree: '❌',
enable: '🔛',
disable: '📴',
on: '🔛',
off: '📴',
enabled: '🔛',
disabled: 'offline',
active: '🟢',
inactive: '🔴',
online: '🟢',
offline: '🔴',
busy: '🟡',
away: '🟠',
invisible: '⚫',
status: '🔵',
signal: '📶',
network: '🌐',
internet: '🌐',
wifi: '📶',
bluetooth: '📡',
gps: '📍',
location: '📍',
map: '🗺️',
route: '🛣️',
navigation: '🧭',
compass: '🧭',
direction: '🧭',
destination: '🏁',
start: '🏁',
finish: '🏁',
flag: '🏁',
milestone: '🏁',
goal: '🎯',
target: '🎯',
aim: '🎯',
objective: '🎯',
mission: '🎯',
vision: '👁️',
plan: '📋',
strategy: '♟️',
tactics: '⚔️',
war: '⚔️',
battle: '⚔️',
fight: '⚔️',
conflict: '⚔️',
peace: '🕊️',
love: '💕',
friendship: '👭',
family: '👨👩👧👦',
relationship: '💑',
romance: '💏',
marriage: '💍',
wedding: '💒',
divorce: '💔',
separation: '💔',
single: '👤',
couple: '💑',
group: '👥',
team: '👥',
organization: '🏢',
company: '🏢',
corporation: '🏢',
enterprise: '🏢',
business: '💼',
commerce: '💼',
trade: '💼',
market: '🛒',
shop: '🏪',
store: '🏪',
mall: '🏪',
outlet: '🏪',
franchise: '🏪',
brand: '🏷️',
logo: '🏷️',
trademark: '🏷️',
copyright: '©️',
patent: '©️',
license: '©️',
certification: '©️',
award: '🏆',
prize: '🏆',
reward: '🏆',
recognition: '🏆',
achievement: '🏆',
success: '🎉',
celebration: '🎉',
party: '🎉',
festival: '🎉',
holiday: '🎉',
vacation: '🏖️',
rest: '🏖️',
relaxation: '🏖️',
leisure: '🏖️',
fun: '游乐',
game: '🎮',
entertainment: '🎬',
hobby: '🎨',
interest: '🎨',
passion: '🔥',
enthusiasm: '🔥',
energy: '⚡',
power: '⚡',
strength: '💪',
force: '💪',
effort: '💪',
hard_work: '💪',
dedication: '💪',
commitment: '💪',
loyalty: '💪',
faithfulness: '💪',
trust: '🤝',
cooperation: '🤝',
collaboration: '🤝',
partnership: '🤝',
alliance: '🤝',
union: '🤝',
connection: '🤝',
relation: '🤝',
bond: '🤝',
link: '🔗',
chain: '🔗',
tie: '🔗',
rope: '🔗',
thread: '🧵',
string: '🧵',
yarn: '🧵',
fabric: '🧵',
cloth: '🧵',
textile: '🧵',
material: '🧵',
substance: '🧵',
element: '🧵',
component: '🧵',
part: '🧵',
piece: '🧵',
section: '🧵',
segment: '🧵',
portion: '🧵',
fraction: '🧵',
division: '🧵',
split: '🧵',
break: '🧵',
crack: '🧵',
gap: '🧵',
space: '🧵',
interval: '🧵',
distance: '🧵',
range: '🧵',
scope: '🧵',
extent: '🧵',
limit: '🧵',
boundary: '🧵',
edge: '🧵',
border: '🧵',
margin: '🧵',
frame: '🧵',
outline: '🧵',
shape: '🧵',
form: '🧵',
structure: '🧵',
system: '🧵',
framework: '🧵',
model: '🧵',
pattern: '🧵',
template: '🧵',
blueprint: '🧵',
plan: '🧵',
design: '🧵',
architecture: '🧵',
engineering: '🧵',
construction: '🧵',
building: '🧵',
creation: '🧵',
production: '🧵',
manufacturing: '🧵',
industry: '🧵',
sector: '🧵',
field: '🧵',
area: '🧵',
domain: '🧵',
region: '🧵',
territory: '🧵',
zone: '🧵',
sphere: '🧵',
realm: '🧵',
kingdom: '🧵',
empire: '🧵',
nation: '🧵',
country: '🧵',
state: '🧵',
province: '🧵',
city: '🧵',
town: '🧵',
village: '🧵',
community: '🧵',
society: '🧵',
culture: '🧵',
civilization: '🧵',
history: '🧵',
past: '🧵',
present: '🧵',
future: '🧵',
time: '🧵',
moment: '🧵',
second: '🧵',
minute: '🧵',
hour: '🧵',
day: '🧵',
week: '🧵',
month: '🧵',
year: '🧵',
decade: '🧵',
century: '🧵',
millennium: '🧵',
era: '🧵',
period: '🧵',
age: '🧵',
epoch: '🧵',
phase: '🧵',
stage: '🧵',
level: '🧵',
grade: '🧵',
rank: '🧵',
class: '🧵',
type: '🧵',
kind: '🧵',
sort: '🧵',
variety: '🧵',
species: '🧵',
genus: '🧵',
family: '🧵',
order: '🧵',
class: '🧵',
phylum: '🧵',
kingdom: '🧵',
domain: '🧵',
life: '🧵',
death: '🧵',
birth: '🧵',
growth: '🧵',
development: '🧵',
evolution: '🧵',
change: '🧵',
transformation: '🧵',
progress: '🧵',
advancement: '🧵',
improvement: '🧵',
enhancement: '🧵',
upgrade: '🧵',
update: '🧵',
innovation: '🧵',
invention: '🧵',
discovery: '🧵',
exploration: '🧵',
research: '🧵',
study: '🧵',
education: '🧵',
learning: '🧵',
knowledge: '🧵',
wisdom: '🧵',
intelligence: '🧵',
understanding: '🧵',
insight: '🧵',
perception: '🧵',
awareness: '🧵',
consciousness: '🧵',
mind: '🧵',
thought: '🧵',
idea: '🧵',
concept: '🧵',
notion: '🧵',
belief: '🧵',
opinion: '🧵',
view: '🧵',
perspective: '🧵',
attitude: '🧵',
feeling: '🧵',
emotion: '🧵',
mood: '🧵',
sentiment: '🧵',
affection: '🧵',
sympathy: '🧵',
empathy: '🧵',
compassion: '🧵',
kindness: '🧵',
generosity: '🧵',
charity: '🧵',
goodwill: '🧵',
friendship: '🧵',
companionship: '🧵',
fellowship: '🧵',
association: '🧵',
affiliation: '🧵',
membership: '🧵',
participation: '🧵',
involvement: '🧵',
engagement: '🧵',
commitment: '🧵',
dedication: '🧵',
devotion: '🧵',
loyalty: '🧵',
faithfulness: '🧵',
fidelity: '🧵',
honesty: '🧵',
truthfulness: '🧵',
sincerity: '🧵',
authenticity: '🧵',
genuineness: '🧵',
reliability: '🧵',
dependability: '🧵',
trustworthiness: '🧵',
credibility: '🧵',
believability: '🧵',
plausibility: '🧵',
likelihood: '🧵',
probability: '🧵',
possibility: '🧵',
potentiality: '🧵',
capability: '🧵',
capacity: '🧵',
ability: '🧵',
skill: '🧵',
talent: '🧵',
expertise: '🧵',
proficiency: '🧵',
mastery: '🧵',
excellence: '🧵',
quality: '🧵',
standard: '🧵',
criterion: '🧵',
measure: '🧵',
metric: '🧵',
indicator: '🧵',
gauge: '🧵',
yardstick: '🧵',
benchmark: '🧵',
reference: '🧵',
comparison: '🧵',
contrast: '🧵',
similarity: '🧵',
difference: '🧵',
variation: '🧵',
diversity: '🧵',
unity: '🧵',
harmony: '🧵',
balance: '🧵',
equilibrium: '🧵',
stability: '🧵',
consistency: '🧵',
coherence: '🧵',
integrity: '🧵',
wholeness: '🧵',
completeness: '🧵',
totality: '🧵',
entirety: '🧵',
fullness: '🧵',
abundance: '🧵',
plenty: '🧵',
richness: '🧵',
wealth: '🧵',
prosperity: '🧵',
success: '🧵',
achievement: '🧵',
accomplishment: '🧵',
completion: '🧵',
fulfillment: '🧵',
realization: '🧵',
actualization: '🧵',
manifestation: '🧵',
expression: '🧵',
communication: '🧵',
dialogue: '🧵',
conversation: '🧵',
discussion: '🧵',
debate: '🧵',
argument: '🧵',
dispute: '🧵',
controversy: '🧵',
conflict: '🧵',
tension: '🧵',
friction: '🧵',
clash: '🧵',
disagreement: '🧵',
opposition: '🧵',
resistance: '🧵',
obstacle: '🧵',
barrier: '🧵',
hindrance: '🧵',
impediment: '🧵',
challenge: '🧵',
difficulty: '🧵',
hardship: '🧵',
adversity: '🧵',
trouble: '🧵',
problem: '🧵',
issue: '🧵',
matter: '🧵',
concern: '🧵',
worry: '🧵',
anxiety: '🧵',
fear: '🧵',
terror: '🧵',
horror: '🧵',
dread: '🧵',
apprehension: '🧵',
unease: '🧵',
discomfort: '🧵',
pain: '🧵',
suffering: '🧵',
distress: '🧵',
anguish: '🧵',
torment: '🧵',
agony: '🧵',
misery: '🧵',
sorrow: '🧵',
sadness: '🧵',
melancholy: '🧵',
depression: '🧵',
gloom: '🧵',
despair: '🧵',
hopelessness: '🧵',
desperation: '🧵',
helplessness: '🧵',
powerlessness: '🧵',
weakness: '🧵',
frailty: '🧵',
fragility: '🧵',
delicacy: '🧵',
tenderness: '🧵',
sensitivity: '🧵',
responsiveness: '🧵',
reactivity: '🧵',
adaptability: '🧵',
flexibility: '🧵',
mobility: '🧵',
agility: '🧵',
nimbleness: '🧵',
quickness: '🧵',
swiftness: '🧵',
speed: '🧵',
velocity: '🧵',
rapidity: '🧵',
haste: '🧵',
urgency: '🧵',
emergency: '🧵',
crisis: '🧵',
danger: '🧵',
risk: '🧵',
hazard: '🧵',
threat: '🧵',
menace: '🧵',
peril: '🧵',
jeopardy: '🧵',
vulnerability: '🧵',
exposure: '🧵',
susceptibility: '🧵',
liability: '🧵',
accountability: '🧵',
responsibility: '🧵',
obligation: '🧵',
duty: '🧵',
burden: '🧵',
load: '🧵',
weight: '🧵',
pressure: '🧵',
stress: '🧵',
tension: '🧵',
strain: '🧵',
effort: '🧵',
exertion: '🧵',
labor: '🧵',
toil: '🧵',
work: '🧵',
employment: '🧵',
occupation: '🧵',
profession: '🧵',
career: '🧵',
vocation: '🧵',
calling: '🧵',
avocation: '🧵',
hobby: '🧵',
pastime: '🧵',
recreation: '🧵',
amusement: '🧵',
entertainment: '🧵',
pleasure: '🧵',
enjoyment: '🧵',
satisfaction: '🧵',
contentment: '🧵',
happiness: '🧵',
joy: '🧵',
delight: '🧵',
elation: '🧵',
euphoria: '🧵',
bliss: '🧵',
ecstasy: '🧵',
rapture: '🧵',
transport: '🧵',
thrill: '🧵',
excitement: '🧵',
exhilaration: '🧵',
stimulation: '🧵',
arousal: '🧵',
activation: '🧵',
energizing: '🧵',
invigoration: '🧵',
revitalization: '🧵',
renewal: '🧵',
rebirth: '🧵',
regeneration: '🧵',
restoration: '🧵',
rehabilitation: '🧵',
healing: '🧵',
recovery: '🧵',
improvement: '🧵',
betterment: '🧵',
advancement: '🧵',
progress: '🧵',
development: '🧵',
growth: '🧵',
expansion: '🧵',
increase: '🧵',
multiplication: '🧵',
proliferation: '🧵',
propagation: '🧵',
dissemination: '🧵',
distribution: '🧵',
allocation: '🧵',
assignment: '🧵',
delegation: '🧵',
appointment: '🧵',
nomination: '🧵',
election: '🧵',
selection: '🧵',
choice: '🧵',
preference: '🧵',
option: '🧵',
alternative: '🧵',
possibility: '🧵',
opportunity: '🧵',
chance: '🧵',
luck: '🧵',
fortune: '🧵',
fate: '🧵',
destiny: '🧵',
karma: '🧵',
providence: '🧵',
serendipity: '🧵',
coincidence: '🧵',
happenstance: '🧵',
accident: '🧵',
incident: '🧵',
event: '🧵',
occurrence: '🧵',
phenomenon: '🧵',
fact: '🧵',
reality: '🧵',
truth: '🧵',
veracity: '🧵',
accuracy: '🧵',
precision: '🧵',
exactness: '🧵',
correctness: '🧵',
validity: '🧵',
reliability: '🧵',
dependability: '🧵',
trustworthiness: '🧵',
authenticity: '🧵',
genuineness: '🧵',
originality: '🧵',
novelty: '🧵',
uniqueness: '🧵',
distinctiveness: '🧵',
individuality: '🧵',
personality: '🧵',
character: '🧵',
nature: '🧵',
essence: '🧵',
substance: '🧵',
core: '🧵',
heart: '🧵',
soul: '🧵',
spirit: '🧵',
mind: '🧵',
intellect: '🧵',
reason: '🧵',
logic: '🧵',
rationality: '🧵',
sensibility: '🧵',
emotion: '🧵',
feeling: '🧵',
intuition: '🧵',
instinct: '🧵',
perception: '🧵',
sensation: '🧵',
awareness: '🧵',
consciousness: '🧵',
attention: '🧵',
focus: '🧵',
concentration: '🧵',
mindfulness: '🧵',
meditation: '🧵',
contemplation: '🧵',
reflection: '🧵',
consideration: '🧵',
deliberation: '🧵',
evaluation: '🧵',
assessment: '🧵',
appraisal: '🧵',
judgment: '🧵',
decision: '🧵',
determination: '🧵',
resolution: '🧵',
conclusion: '🧵',
finding: '🧵',
verdict: '🧵',
ruling: '🧵',
decree: '🧵',
command: '🧵',
order: '🧵',
instruction: '🧵',
directive: '🧵',
guidance: '🧵',
advice: '🧵',
counsel: '🧵',
recommendation: '🧵',
suggestion: '🧵',
proposal: '🧵',
offer: '🧵',
invitation: '🧵',
request: '🧵',
demand: '🧵',
requirement: '🧵',
necessity: '🧵',
need: '🧵',
want: '🧵',
desire: '🧵',
wish: '🧵',
hope: '🧵',
aspiration: '🧵',
ambition: '🧵',
goal: '🧵',
objective: '🧵',
target: '🧵',
purpose: '🧵',
intention: '🧵',
plan: '🧵',
strategy: '🧵',
method: '🧵',
approach: '🧵',
technique: '🧵',
procedure: '🧵',
process: '🧵',
operation: '🧵',
mechanism: '🧵',
function: '🧵',
role: '🧵',
function: '🧵',
responsibility: '🧵',
duty: '🧵',
obligation: '🧵',
commitment: '🧵',
promise: '🧵',
vow: '🧵',
pledge: '🧵',
oath: '🧵',
contract: '🧵',
agreement: '🧵',
covenant: '🧵',
treaty: '🧵',
accord: '🧵',
concord: '🧵',
harmony: '🧵',
unity: '🧵',
solidarity: '🧵',
cohesion: '🧵',
integration: '🧵',
coordination: '🧵',
cooperation: '🧵',
collaboration: '🧵',
teamwork: '🧵',
partnership: '🧵',
alliance: '🧵',
coalition: '🧵',
federation: '🧵',
confederation: '🧵',
union: '🧵',
merger: '🧵',
consolidation: '🧵',
amalgamation: '🧵',
fusion: '🧵',
combination: '🧵',
synthesis: '🧵',
integration: '🧵',
unification: '🧵',
convergence: '🧵',
alignment: '🧵',
synchronization: '🧵',
coordination: '🧵',
harmony: '🧵',
balance: '🧵',
equilibrium: '🧵',
symmetry: '🧵',
proportion: '🧵',
ratio: '🧵',
relationship: '🧵',
correlation: '🧵',
connection: '🧵',
association: '🧵',
linkage: '🧵',
bond: '🧵',
tie: '🧵',
attachment: '🧵',
dependency: '🧵',
reliance: '🧵',
trust: '🧵',
confidence: '🧵',
faith: '🧵',
belief: '🧵',
conviction: '🧵',
certainty: '🧵',
assurance: '🧵',
guarantee: '🧵',
warranty: '🧵',
security: '🧵',
safety: '🧵',
protection: '🧵',
defense: '🧵',
safeguard: '🧵',
shield: '🧵',
armor: '🧵',
fortification: '🧵',
barrier: '🧵',
fence: '🧵',
wall: '🧵',
gate: '🧵',
door: '🧵',
entrance: '🧵',
exit: '🧵',
passage: '🧵',
corridor: '🧵',
hallway: '🧵',
room: '🧵',
chamber: '🧵',
space: '🧵',
area: '🧵',
place: '🧵',
location: '🧵',
position: '🧵',
site: '🧵',
venue: '🧵',
destination: '🧵',
goal: '🧵',
endpoint: '🧵',
terminus: '🧵',
conclusion: '🧵',
end: '🧵',
finish: '🧵',
completion: '🧵',
culmination: '🧵',
climax: '🧵',
peak: '🧵',
summit: '🧵',
apex: '🧵',
pinnacle: '🧵',
zenith: '🧵',
acme: '🧵',
height: '🧵',
altitude: '🧵',
elevation: '🧵',
level: '🧵',
grade: '🧵',
tier: '🧵',
layer: '🧵',
stratum: '🧵',
floor: '🧵',
story: '🧵',
level: '🧵',
stage: '🧵',
phase: '🧵',
period: '🧵',
era: '🧵',
age: '🧵',
epoch: '🧵',
time: '🧵',
moment: '🧵',
instant: '🧵',
second: '🧵',
minute: '🧵',
hour: '🧵',
day: '🧵',
week: '🧵',
month: '🧵',
year: '🧵',
decade: '🧵',
century: '🧵',
millennium: '🧵',
era: '🧵',
epoch: '🧵',
age: '🧵',
period: '🧵',
season: '🧵',
climate: '🧵',
weather: '🧵',
atmosphere: '🧵',
environment: '🧵',
setting: '🧵',
context: '🧵',
situation: '🧵',
circumstance: '🧵',
condition: '🧵',
state: '🧵',
status: '🧵',
position: '🧵',
rank: '🧵',
standing: '🧵',
reputation: '🧵',
prestige: '🧵',
honor: '🧵',
dignity: '🧵',
respect: '🧵',
regard: '🧵',
esteem: '🧵',
admiration: '🧵',
appreciation: '🧵',
gratitude: '🧵',
thankfulness: '🧵',
indebtedness: '🧵',
obligation: '🧵',
duty: '🧵',
responsibility: '🧵',
accountability: '🧵',
liability: '🧵',
culpability: '🧵',
guilt: '🧵',
blame: '🧵',
fault: '🧵',
error: '🧵',
mistake: '🧵',
misstep: '🧵',
slip: '🧵',
blunder: '🧵',
faux_pas: '🧵',
indiscretion: '🧵',
impropriety: '🧵',
misconduct: '🧵',
wrongdoing: '🧵',
offense: '🧵',
transgression: '🧵',
violation: '🧵',
breach: '🧵',
infringement: '🧵',
encroachment: '🧵',
trespass: '🧵',
intrusion: '🧵',
invasion: '🧵',
assault: '🧵',
attack: '🧵',
aggression: '🧵',
hostility: '🧵',
animosity: '🧵',
resentment: '🧵',
anger: '🧵',
rage: '🧵',
fury: '🧵',
wrath: '🧵',
ire: '🧵',
indignation: '🧵',
outrage: '🧵',
fury: '🧵',
lividity: '🧵',
choleric: '🧵',
irascible: '🧵',
cantankerous: '🧵',
cranky: '🧵',
grumpy: '🧵',
surly: '🧵',
testy: '🧵',
touchy: '🧵',
irritable: '🧵',
peevish: '🧵',
querulous: '🧵',
captious: '🧵',
fault-finding: '🧵',
hypercritical: '🧵',
nitpicky: '🧵',
persnickety: '🧵',
particular: '🧵',
fussy: '🧵',
finicky: '🧵',
choosy: '🧵',
picky: '🧵',
selective: '🧵',
discriminating: '🧵',
discerning: '🧵',
refined: '🧵',
sophisticated: '🧵',
cultured: '🧵',
educated: '🧵',
knowledgeable: '🧵',
informed: '🧵',
aware: '🧵',
conscious: '🧵',
cognizant: '🧵',
mindful: '🧵',
observant: '🧵',
perceptive: '🧵',
sensitive: '🧵',
responsive: '🧵',
reactive: '🧵',
adaptive: '🧵',
flexible: '🧵',
mobile: '🧵',
agile: '🧵',
nimble: '🧵',
quick: '🧵',
swift: '🧵',
fast: '🧵',
rapid: '🧵',
speedy: '🧵',
hasty: '🧵',
urgent: '🧵',
pressing: '🧵',
critical: '🧵',
crucial: '🧵',
vital: '🧵',
essential: '🧵',
indispensable: '🧵',
necessary: '🧵',
required: '🧵',
mandatory: '🧵',
obligatory: '🧵',
compulsory: '🧵',
binding: '🧵',
enforceable: '🧵',
legal: '🧵',
lawful: '🧵',
legitimate: '🧵',
valid: '🧵',
proper: '🧵',
appropriate: '🧵',
suitable: '🧵',
fitting: '🧵',
apt: '🧵',
relevant: '🧵',
applicable: '🧵',
pertinent: '🧵',
germane: '🧵',
material: '🧵',
substantial: '🧵',
significant: '🧵',
important: '🧵',
crucial: '🧵',
critical: '🧵',
pivotal: '🧵',
key: '🧵',
central: '🧵',
core: '🧵',
fundamental: '🧵',
basic: '🧵',
elementary: '🧵',
primary: '🧵',
secondary: '🧵',
tertiary: '🧵',
quaternary: '🧵',
quinary: '🧵',
senary: '🧵',
septenary: '🧵',
octonary: '🧵',
nonary: '🧵',
denary: '🧵',
decimal: '🧵',
dozenal: '🧵',
vigesimal: '🧵',
hexatrigesimal: '🧵',
duodecimal: '🧵',
hexadecimal: '🧵',
binary: '🧵',
ternary: '🧵',
quaternary: '🧵',
quinary: '🧵',
senary: '🧵',
septenary: '🧵',
octonary: '🧵',
nonary: '🧵',
denary: '🧵',
decimal: '🧵',
dozenal: '🧵',
vigesimal: '🧵',
hexatrigesimal: '🧵',
duodecimal: '🧵',
hexadecimal: '🧵',
binary: '🧵',
ternary: '🧵',
quaternary: '🧵',
quinary: '🧵',
senary: '🧵',
septenary: '🧵',
octonary: '🧵',
nonary: '🧵',
denary: '🧵',
decimal: '🧵',
dozenal: '🧵',
vigesimal: '🧵',
hexatrigesimal: '🧵',
duodecimal: '🧵',
hexadecimal: '🧵',
binary: '🧵',
ternary: '🧵',
quaternary: '🧵',
quinary: '🧵',
senary: '🧵',
septenary: '🧵',
octonary: '🧵',
nonary: '🧵',
denary: '🧵',
decimal: '🧵',
dozenal: '🧵',
vigesimal: '🧵',
hexatrigesimal: '🧵',
duodecimal: '🧵',
hexadecimal: '🧵',
binary: '🧵',
ternary: '🧵',
quaternary: '🧵',
quinary: '🧵',
senary: '🧵',
septenary: '🧵',
octonary: '🧵',
nonary: '🧵',
denary: '🧵',
decimal: '🧵',
dozenal: '🧵',
vigesimal: '🧵',
hexatrigesimal: '🧵',
duodecimal: '🧵',
hexadecimal: '🧵',
binary: '🧵',
ternary: '🧵',
quaternary: '🧵',
quinary: '🧵',
senary: '🧵',
septenary: '🧵',
octonary: '🧵',
nonary: '🧵',
denary: '🧵',
decimal: '🧵',
dozenal: '🧵',
vigesimal: '🧵',
hexatrigesimal: '🧵',
duodecimal: '🧵',
hexadecimal......
};
// 模拟收藏数据
const FAVORITE_NEWS = [
{ id: 1, title: '人工智能在医疗领域的突破性进展', category: '科技', time: '2小时前', image: 'https://picsum.photos/300/200?random=1' },
{ id: 2, title: '新能源汽车市场迎来爆发式增长', category: '商业', time: '4小时前', image: 'https://picsum.photos/300/200?random=2' },
{ id: 3, title: '量子计算技术取得重大突破', category: '科技', time: '昨天', image: 'https://picsum.photos/300/200?random=3' },
{ id: 4, title: '全球芯片短缺问题逐步缓解', category: '科技', time: '2天前', image: 'https://picsum.photos/300/200?random=4' },
{ id: 5, title: '5G网络建设加速推进', category: '科技', time: '3天前', image: 'https://picsum.photos/300/200?random=5' },
{ id: 6, title: '区块链技术应用场景持续拓展', category: '科技', time: '4天前', image: 'https://picsum.photos/300/200?random=6' },
];
const { width } = Dimensions.get('window');
const FavoriteItem: React.FC<{ news: any }> = ({ news }) => {
return (
<TouchableOpacity style={styles.newsItem}>
<Image source={{ uri: news.image }} style={styles.newsImage} />
<View style={styles.newsContent}>
<Text style={styles.newsTitle}>{news.title}</Text>
<View style={styles.newsMeta}>
<Text style={styles.categoryTag}>{news.category}</Text>
<Text style={styles.timeTag}>{news.time}</Text>
</View>
</View>
</TouchableOpacity>
);
};
const TechNewsFavorites: React.FC = () => {
return (
<SafeAreaView style={styles.container}>
<View style={styles.header}>
<Text style={styles.title}>收藏列表</Text>
<Text style={styles.subtitle}>您收藏的科技新闻</Text>
</View>
<ScrollView contentContainerStyle={styles.content}>
<View style={styles.newsList}>
{FAVORITE_NEWS.map((news) => (
<FavoriteItem key={news.id} news={news} />
))}
</View>
</ScrollView>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f8f9fa',
},
header: {
paddingTop: 40,
paddingBottom: 20,
paddingHorizontal: 20,
backgroundColor: '#ffffff',
borderBottomWidth: 1,
borderBottomColor: '#e9ecef',
},
title: {
fontSize: 24,
fontWeight: 'bold',
color: '#333',
textAlign: 'center',
},
subtitle: {
fontSize: 16,
color: '#666',
textAlign: 'center',
marginTop: 8,
},
content: {
padding: 16,
},
newsList: {
marginBottom: 20,
},
newsItem: {
backgroundColor: '#ffffff',
borderRadius: 12,
marginBottom: 16,
elevation: 3,
shadowColor: '#000',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.1,
shadowRadius: 4,
overflow: 'hidden',
},
newsImage: {
width: '100%',
height: 150,
},
newsContent: {
padding: 16,
},
newsTitle: {
fontSize: 16,
fontWeight: 'bold',
color: '#333',
marginBottom: 10,
lineHeight: 22,
},
newsMeta: {
flexDirection: 'row',
justifyContent: 'space-between',
},
categoryTag: {
fontSize: 12,
color: '#3B82F6',
fontWeight: 'bold',
backgroundColor: '#dbeafe',
paddingHorizontal: 8,
paddingVertical: 4,
borderRadius: 12,
},
timeTag: {
fontSize: 12,
color: '#666',
},
});
export default TechNewsFavorites;

打包
接下来通过打包命令npn run harmony将reactNative的代码打包成为bundle,这样可以进行在开源鸿蒙OpenHarmony中进行使用。

打包之后再将打包后的鸿蒙OpenHarmony文件拷贝到鸿蒙的DevEco-Studio工程目录去:

最后运行效果图如下显示:

本文解析了一个基于React Native实现的科技新闻收藏列表组件,采用清晰的组件分层架构(头部区域+内容列表),通过FavoriteItem组件封装实现高度复用性。数据结构设计完整且可扩展,包含ID、标题、分类等关键字段。响应式布局基于Dimensions API适配不同屏幕,列表交互采用垂直滚动模式优化用户体验。该实现体现了React Native跨端开发优势,支持Android、iOS和鸿蒙平台的兼容运行,展示了内容列表类应用开发的最佳实践。
欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。
更多推荐


所有评论(0)