HarmonyOS 6 React Native鸿蒙跨平台采用了函数式组件的形式,通过 props 接收分类数据,使用 TouchableOpacity实现了点击交互效果

【CANN训练营】算子开发概述 阅读详情

在跨端开发领域,React Native 凭借一次编写、多端运行的核心优势,成为衔接前端与原生开发的重要技术方案,其基于React的组件化思想、结合原生组件的渲染特性,能高效实现鸿蒙、Android、iOS等多端的界面与逻辑统一。本次解析的艺术分类页面代码,是一套典型的React Native跨端开发实践,涵盖了RN核心的组件使用、样式布局、数据驱动渲染、自定义组件封装等关键技术点,同时代码的设计思路可无缝适配鸿蒙跨端开发的核心诉求,下文将从技术实现层面展开详细解读。

一、技术栈

本页面基于React Native + TypeScript开发,TypeScript的引入为跨端开发提供了强类型校验,有效降低了多端适配过程中的类型错误,提升了代码的可维护性与可扩展性。代码中核心引入的RN原生组件与API,均为跨端开发的基础且高频使用的能力,具体选型逻辑与跨端价值如下:

  1. 核心UI组件:SafeAreaView、View、Text、TouchableOpacity、ScrollView、Image,这类组件是RN的基础原生桥接组件,在底层会被RN框架编译为对应平台的原生组件(Android的View/TextView、iOS的UIView/UILabel、鸿蒙的Component/Text),保证多端的原生渲染体验,避免了H5式的WebView渲染带来的性能损耗;
  2. 布局与适配API:StyleSheet、Dimensions,StyleSheet是RN的样式管理方案,采用与CSS相似的语法但做了轻量化适配,同时通过JS对象的形式定义样式,支持跨端样式统一;Dimensions用于获取设备窗口尺寸,是实现多端屏幕适配的核心API,解决了不同分辨率、不同尺寸设备的布局兼容问题;
  3. React核心能力:useState(虽本页面未实际使用,但预留了状态管理入口)、函数式组件、Props传值,基于React的声明式编程与组件化思想,让代码的逻辑与视图解耦,这一思想与鸿蒙开发的方舟开发框架(ArkUI) 组件化设计高度契合,为后续跨端迁移或多端协同开发奠定了基础。

同时代码中采用emoji文本替代SVG/图标库实现图标展示,是跨端开发中的一种轻量优化方案,避免了因第三方图标库的平台兼容性问题(如鸿蒙对部分RN图标库的桥接支持不足)导致的渲染异常,同时减少了第三方依赖,降低了项目的跨端适配成本。

二、全局常量设计

代码中定义了ICONS与CATEGORIES两个全局常量,以及通过Dimensions.get('window')获取的设备宽度常量width,这一设计是跨端开发中可配置化、数据驱动的典型体现,同时兼顾了多端的适配性与可维护性。

  • ICONS常量:以键值对的形式封装了全项目的emoji图标,将图标资源统一管理,在跨端开发中,若某一平台对特定emoji的渲染存在差异,可仅在该常量中做平台化判断与替换(如通过RN的PlatformAPI区分Android、iOS、鸿蒙,返回对应平台的兼容图标),无需修改业务代码,符合单一职责原则;同时避免了硬编码图标带来的多端修改成本,提升了代码的可维护性。
  • CATEGORIES常量:模拟了艺术分类的业务数据,采用数组对象的形式,包含分类的id、name、icon、description等核心字段,实现了数据与视图的完全解耦。在实际跨端项目中,该数据可由后端接口统一返回,前端仅需做数据渲染,保证了多端的业务数据一致性;同时数组对象的结构可直接适配RN的列表渲染、鸿蒙ArkUI的ForEach渲染,为跨端数据层的统一提供了基础。
  • 设备宽度width:通过Dimensions.get('window').width获取设备的实际窗口宽度,替代了固定的像素值,解决了不同尺寸设备(如手机、平板、鸿蒙智慧屏)的布局适配问题。在跨端开发中,不同平台的设备尺寸差异较大,固定像素值会导致布局错乱,而基于设备实际尺寸的动态计算,能保证多端布局的一致性与美观性。

需要注意的是,代码中ICONS常量的内容存在截断,但该设计思路在跨端开发中可进一步优化,如将图标常量按业务模块拆分,减少全局常量的体积,提升项目的加载性能。

三、自定义组件封装

代码中封装了CategoryItem自定义函数式组件,这是React Native组件化开发的核心,也是跨端开发中组件复用的关键。该组件接收category属性作为入参,负责渲染单个艺术分类的视图,其封装设计充分考虑了跨端开发的复用性与适配性,具体技术点如下:

  1. Props传值与类型约束:组件通过React.FC<{ category: any }>定义了函数式组件的类型,同时接收category属性,虽暂时使用any类型,但若在实际项目中替换为具体的接口类型(如interface Category { id: number; name: string; icon: string; description: string }),可通过TypeScript的强类型校验,避免跨端开发中因数据类型错误导致的渲染异常,提升代码的健壮性。
  2. 组件内视图结构:采用TouchableOpacity作为根容器,替代了RN的Button组件,原因在于TouchableOpacity支持自定义样式,且在跨端开发中对Android、iOS、鸿蒙的原生触摸事件桥接更友好,能保证多端的触摸反馈一致性(如点击时的透明效果);内部嵌套View、Text组件,实现了“图标-分类名称-分类描述”的三层布局,符合移动端的视觉层级设计,同时该布局结构可无缝适配鸿蒙ArkUI的组件嵌套逻辑。
  3. 样式的组件内隔离:CategoryItem组件的样式通过全局StyleSheet统一管理,未采用内联样式,这一设计符合RN的样式开发规范,同时在跨端开发中,样式的统一管理便于做平台化样式适配(如通过Platform.select为不同平台设置不同的样式属性),避免了内联样式带来的多端修改成本。

自定义组件的封装,让艺术分类的单个项成为独立的可复用单元,在项目的其他模块(如分类列表、推荐页面)中可直接引入,无需重复开发;同时在跨端开发中,该组件的逻辑与视图完全解耦,若需迁移至鸿蒙ArkUI,仅需将RN组件替换为对应的ArkUI组件,业务逻辑与数据传值方式可基本保持不变,大幅降低了跨端迁移的成本。

四、主组件ArtClassify

ArtClassify作为页面的主组件,负责整合所有子组件、实现页面的整体布局与数据渲染,其代码设计充分体现了React Native声明式编程的核心思想,同时兼顾了跨端开发的布局适配与性能优化,核心技术点如下:

  1. 页面根容器的选择:以SafeAreaView作为页面的根容器,替代了普通的View组件,SafeAreaView是RN为解决刘海屏、异形屏适配而提供的原生组件,能自动识别设备的安全区域,避免布局被刘海、状态栏、底部导航栏遮挡。在跨端开发中,不同平台的异形屏设计差异较大(如鸿蒙的挖孔屏、iOS的灵动岛、Android的刘海屏),SafeAreaView能实现多端的安全区域适配,无需开发者做平台化的手动计算,提升了跨端开发效率。
  2. 页面头部布局:通过View封装了页面的标题与副标题,采用Text组件实现文本展示,设置了居中对齐、内边距等样式。在跨端开发中,页面头部的样式可通过PlatformAPI做平台化定制,如鸿蒙平台的标题字体大小、颜色可与Android/iOS区分,仅需在样式中做简单的条件判断,无需修改布局结构。
  3. 滚动布局的实现:采用ScrollView作为内容区域的容器,设置contentContainerStyle为内容区域添加内边距。ScrollView是RN的核心滚动组件,底层桥接了各平台的原生滚动控件(Android的ScrollView、iOS的UIScrollView、鸿蒙的Scroll),保证了多端的滚动性能与体验;同时contentContainerStyle与style的区别在于,前者作用于ScrollView的内容容器,后者作用于ScrollView本身,这一设计能避免滚动区域的样式与容器样式冲突,保证多端布局的一致性。
  4. 数据驱动的列表渲染:通过CATEGORIES.map()遍历分类数据,为每个分类项渲染CategoryItem组件,并为其设置唯一的key值(category.id)。在React Native中,key值的作用是帮助RN框架识别列表项的唯一性,提升列表的重渲染性能;在跨端开发中,这一渲染方式与鸿蒙ArkUI的ForEach、Vue的v-for、Angular的*ngFor思想一致,实现了数据与视图的双向绑定,当数据发生变化时,多端的视图会自动更新,保证了业务逻辑的一致性。

五、样式设计

代码中通过StyleSheet.create()定义了所有的样式,这是React Native的官方推荐样式方案,与传统的CSS样式相比,做了针对性的优化,同时兼顾了跨端开发的样式兼容性,核心技术点与跨端适配思路如下:

  1. StyleSheet.create()的优势:将样式封装为JS对象,由RN框架做统一的优化处理,如样式的预编译、缓存,提升了组件的渲染性能;同时避免了内联样式的性能损耗,在跨端开发中,预编译的样式能更好地适配各平台的原生渲染引擎,减少样式渲染的平台差异。
  2. 布局样式的动态计算:核心的布局适配体现在categoryItem的宽度设置——width: (width - 48) / 2,该计算方式实现了两列等分布局,其中48为容器的左右内边距(162)与列之间的间距(162)之和,通过设备实际宽度减去固定间距后除以2,保证了在不同尺寸设备上,两个分类项能完美占满屏幕宽度,且间距一致。这一动态计算方式是跨端开发中解决多设备尺寸适配的核心方案,替代了CSS中的百分比布局,避免了因不同平台的盒模型差异导致的布局错乱。
  3. 视觉样式的跨端兼容:样式中使用了borderRadius、elevation、shadow等属性实现圆角与阴影效果,其中elevation是Android的原生阴影属性,shadow是iOS的阴影属性,RN框架会自动为不同平台渲染对应的阴影效果,无需开发者做平台化判断;同时backgroundColor采用了浅色系的十六进制颜色值,避免了不同平台对颜色名称(如white、gray)的渲染差异,保证了多端的视觉一致性。
  4. 字体样式的适配:字体大小采用了px为单位,在React Native中,px并非传统的像素单位,而是逻辑像素,RN框架会根据设备的像素密度(DPI)自动转换为原生的像素值,保证了在不同分辨率设备上,字体大小的一致性。在跨端开发中,若需针对特定平台(如鸿蒙)调整字体样式,可通过Platform.select({ harmonyos: { fontSize: 18 }, ios: { fontSize: 16 }, android: { fontSize: 16 } })实现平台化定制。

本套代码的设计思路不仅适用于React Native的Android、iOS跨端,更能无缝适配React Native for HarmonyOS(RN鸿蒙桥接方案),实现一套代码运行在Android、iOS、鸿蒙三大平台,核心的适配延伸点如下:

  1. 平台化API的兼容:RN鸿蒙桥接方案已实现了View、Text、TouchableOpacity、ScrollView、Dimensions等核心API的鸿蒙适配,本代码中未使用平台专属API,可直接在鸿蒙平台编译运行,无需修改核心代码;若需使用平台专属能力(如鸿蒙的通知、支付),可通过RN的NativeModules封装鸿蒙原生模块,实现与Android、iOS原生模块的统一调用。
  2. 组件化思想的统一:React Native的组件化与鸿蒙ArkUI的组件化设计高度契合,均强调组件复用、数据驱动、声明式编程,本代码中封装的CategoryItem自定义组件,可直接迁移为鸿蒙ArkUI的自定义组件,仅需将RN组件语法替换为ArkUI的TSX语法,业务逻辑与数据传值方式基本保持不变。
  3. 样式系统的适配:React Native的StyleSheet样式系统与鸿蒙ArkUI的样式系统语法高度相似,均支持Flex布局、圆角、阴影、内边距等核心样式属性,本代码中的样式可仅做少量修改(如鸿蒙不支持elevation,替换为shadow即可),实现鸿蒙平台的样式兼容。
  4. 性能优化的一致性:React Native的原生渲染特性与鸿蒙ArkUI的原生渲染特性一致,均能保证页面的渲染性能;同时本代码中采用的数据驱动渲染、列表项唯一key、减少第三方依赖等设计,均符合鸿蒙平台的性能优化要求,能保证在鸿蒙设备上的流畅运行。

动态尺寸计算

const { width } = Dimensions.get('window');

// 样式中使用
categoryItem: {
  width: (width - 48) / 2,
  // 其他样式...
},

通过 Dimensions.get('window') 获取屏幕宽度,然后动态计算每个分类项的宽度,实现了自适应布局。这种方式确保了在不同尺寸的设备上都能保持两列布局,是 React Native 中实现响应式设计的常用技巧。

网格布局策略

<ScrollView contentContainerStyle={styles.content}>
  <View style={styles.categoriesContainer}>
    {CATEGORIES.map((category) => (
      <CategoryItem key={category.id} category={category} />
    ))}
  </View>
</ScrollView>

使用 flexDirection: 'row' 和 flexWrap: 'wrap' 实现了网格布局,并通过 justifyContent: 'space-between' 确保了分类项之间的间距均匀。这种布局方式在 React Native 中性能表现良好,同时也易于在鸿蒙系统中找到对应的实现方式。

CategoryItem 组件

const CategoryItem: React.FC<{ category: any }> = ({ category }) => {
  return (
    <TouchableOpacity style={styles.categoryItem}>
      <View style={styles.categoryIcon}>
        <Text style={styles.categoryIconText}>{category.icon}</Text>
      </View>
      <Text style={styles.categoryName}>{category.name}</Text>
      <Text style={styles.categoryDescription}>{category.description}</Text>
    </TouchableOpacity>
  );
};

CategoryItem 组件采用了函数式组件的形式,通过 props 接收分类数据。使用 TouchableOpacity 实现了点击交互效果,这是 React Native 中处理触摸事件的标准组件,在鸿蒙系统中可以映射为 Button 或 Text 组件配合手势事件。

样式系统

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#f8f9fa',
  },
  // 更多样式...
});

使用 StyleSheet.create 创建样式对象,这是 React Native 推荐的样式定义方式。相比内联样式,StyleSheet 可以提供更好的性能,因为它会在应用启动时进行优化,并且在鸿蒙系统中也能更好地映射到原生样式系统。

鸿蒙系统适配策略

  1. 组件映射:

    • SafeAreaView → SafeArea 或 Flex 容器
    • ScrollView → List 或 Scroll 组件
    • TouchableOpacity → Button 或 Text + 手势事件
    • View → Flex 容器
    • Text → Text 组件
  2. 样式适配:

    • 鸿蒙系统的样式定义方式与 React Native 类似,但属性名称可能略有不同
    • 例如,shadow 相关属性在鸿蒙中需要使用 elevation 或其他等效属性
    • 尺寸单位在鸿蒙中默认使用 vp,与 React Native 的密度无关像素概念类似
  3. 布局适配:

    • 鸿蒙系统的布局系统基于 Flexbox,与 React Native 兼容
    • 响应式布局计算逻辑可以直接复用,但需要注意获取屏幕尺寸的 API 差异
    • React Native 中使用 Dimensions.get('window'),鸿蒙中可以使用 getWindowSize() 或类似 API
  4. 性能优化:

    • 对于分类列表,在鸿蒙中可以考虑使用 List 组件的虚拟化功能,提高滚动性能
    • 图片资源(如果后续添加)需要考虑鸿蒙系统的资源管理机制

这个简单的艺术分类应用为未来的功能扩展提供了良好的技术基础,展现了React Native在内容分类类应用开发中的强大潜力。


真实演示案例代码:



// app.tsx
import React, { useState } from 'react';
import { SafeAreaView, View, Text, StyleSheet, TouchableOpacity, ScrollView, Image, Dimensions } from 'react-native';

// 图标库(使用文本替代SVG)
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: '😉',
  tongue: '😛',
  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',
  art: '🎨',
  design: '🎨',
  music: '🎵',
  film: '🎬',
  photography: '📸',
  fashion: '👗',
  architecture: '🏛️',
  literature: '📚',
  dance: '💃',
  theater: '🎭',
  painting: '🖼️',
  sculpture: '🗿',
  crafts: '🧵',
  pottery: '🏺',
  jewelry: '💍',
  textiles: '🧵',
  glass: '🥃',
  metalwork: '🔨',
  woodwork: '🪚',
  digital: '💻',
  graphic: '🎨',
  typography: '🔤',
  illustration: '🖌️',
  animation: '🎬',
  game: '🎮',
  web: '🌐',
  ui: '📱',
  ux: '🎯',
  print: '🖨️',
  advertising: '📢',
  branding: '🏷️',
  packaging: '📦',
  editorial: '📰',
  motion: '🎬',
  video: '📹',
  audio: '🎧',
  podcast: '🎙️',
  radio: '📻',
  television: '📺',
  cinema: '🎦',
  photography: '📷',
  film: '📽️',
  darkroom: '⬛',
  digital: '💻',
  analog: 'อนา',
  portrait: '👤',
  landscape: '🌄',
  macro: '🔍',
  street: '🏙️',
  nature: '🌿',
  wildlife: '🦁',
  food: '🍽️',
  travel: '✈️',
  documentary: '🎬',
  fashion: '👗',
  wedding: '💒',
  event: '🎉',
  sports: '⚽',
  concert: '🎤',
  art: '🎨',
  design: '🎨',
  creativity: '💡',
  innovation: '🚀',
  inspiration: '✨',
  passion: '🔥',
  skill: '💪',
  technique: '🔧',
  craft: '🧵',
  mastery: '🏆',
  practice: '🏋️',
  discipline: '🧘',
  meditation: '🧘',
  focus: '🎯',
  concentration: '🧠',
  patience: '⏱️',
  dedication: '💪',
  commitment: '💯',
  persistence: '🏃',
  growth: '🌱',
  development: '📈',
  learning: '📚',
  education: '🎓',
  knowledge: '🧠',
  wisdom: '🦉',
  experience: '📅',
  expertise: '👨‍🏫',
  talent: '🌟',
  ability: '💪',
  potential: '🚀',
  expression: '🎭',
  emotion: '😊',
  beauty: '🌸',
  harmony: '☯️',
  balance: '⚖️',
  rhythm: '🎵',
  melody: '🎶',
  color: '🌈',
  form: '📐',
  texture: '🧵',
  pattern: '➰',
  composition: '📐',
  contrast: '⚖️',
  unity: '🤝',
  variety: '🎲',
  emphasis: '🎯',
  movement: '🏃',
  space: '🌌',
  light: '💡',
  shadow: '🌑',
  perspective: '👁️',
  depth: '🕳️',
  dimension: '📏',
  proportion: '⚖️',
  scale: '📏',
  size: '📏',
  shape: '🔺',
  line: '📏',
  point: '🔸',
  curve: '➰',
  angle: '📐',
  edge: '📐',
  surface: '🪞',
  volume: '📦',
  mass: '🪨',
  weight: '⚖️',
  gravity: ' ↓',
  tension: '💪',
  compression: ' ↓',
  shear: '✂️',
  torsion: '🔄',
  bending: ' 📐',
  flexure: ' 📐',
  deflection: ' 📐',
  stress: ' 😰',
  strain: ' 🤕',
  elasticity: ' 🏃',
  plasticity: ' 🧪',
  brittleness: ' 🧊',
  ductility: ' 📐',
  malleability: ' 🏗️',
  hardness: ' 💎',
  toughness: ' 🛡️',
  resilience: ' 🔄',
  fatigue: ' 😴',
  creep: ' 🐌',
  fracture: ' ⚡',
  crack: ' ⚡',
  break: ' 💥',
  failure: ' 🚫',
  strength: ' 💪',
  stiffness: ' 🪵',
  flexibility: ' 🤸',
  durability: ' 🔩',
  stability: ' 🏔️',
  balance: ' ⚖️',
  equilibrium: ' ⚖️',
  symmetry: ' ⚖️',
  asymmetry: ' ⚖️',
  proportion: ' ⚖️',
  harmony: ' 🎵',
  contrast: ' 🎨',
  unity: ' 🤝',
  variety: ' 🎨',
  rhythm: ' 🎵',
  movement: ' 🏃',
  emphasis: ' 🎯',
  focal: ' 🔍',
  center: ' 🎯',
  axis: ' 📐',
  grid: ' 📐',
  module: ' 🧩',
  pattern: ' 🎨',
  repetition: ' 🔄',
  alternation: ' 🔄',
  gradation: ' 📈',
  progression: ' 📈',
  transition: ' 🔄',
  transformation: ' 🔄',
  evolution: ' 📈',
  development: ' 📈',
  growth: ' 🌱',
  maturation: ' 🌱',
  ripening: ' 🍎',
  blossoming: ' 🌸',
  flourishing: ' 🌸',
  thriving: ' 🌱',
  prospering: ' 💰',
  succeeding: ' 🏆',
  achieving: ' 🏆',
  accomplishing: ' 🏆',
  completing: ' ✅',
  finishing: ' ✅',
  ending: ' 🏁',
  conclusion: ' 🏁',
  termination: ' 🏁',
  cessation: ' 🏁',
  stop: ' 🛑',
  pause: ' ⏸️',
  break: ' ⏸️',
  interval: ' ⏸️',
  rest: ' 🛋️',
  relaxation: ' 🛋️',
  leisure: ' 🏖️',
  recreation: ' 🎉',
  entertainment: ' 🎉',
  amusement: ' 🎉',
  fun: ' 🎉',
  joy: ' 😊',
  happiness: ' 😊',
  pleasure: ' 😊',
  satisfaction: ' 😊',
  contentment: ' 😊',
  bliss: ' 😊',
  euphoria: ' 😊',
  elation: ' 😊',
  glee: ' 😊',
  cheer: ' 😊',
  delight: ' 😊',
  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: ' 😊',
  binary: ' 😊',
  ternary: ' 😊',
  quaternary: ' 😊',
  quinary: ' 😊',
  senary: ' 😊',
  septenary: ' 😊',
  octonary:......
};

// 模拟分类数据
const CATEGORIES = [
  { id: 1, name: '艺术创作', icon: '🎨', description: '绘画、雕塑、摄影等视觉艺术' },
  { id: 2, name: '音乐表演', icon: '🎵', description: '古典、流行、民族音乐欣赏' },
  { id: 3, name: '文学阅读', icon: '📚', description: '小说、诗歌、散文等文学作品' },
  { id: 4, name: '电影鉴赏', icon: '🎬', description: '国内外优秀影视作品推荐' },
  { id: 5, name: '舞蹈艺术', icon: '💃', description: '古典舞、现代舞、民族舞等' },
  { id: 6, name: '戏剧戏曲', icon: '🎭', description: '话剧、歌剧、地方戏曲欣赏' },
  { id: 7, name: '工艺美术', icon: '🧵', description: '传统手工艺、现代设计工艺' },
  { id: 8, name: '建筑景观', icon: '🏛️', description: '古今中外建筑艺术赏析' },
];

const { width } = Dimensions.get('window');

const CategoryItem: React.FC<{ category: any }> = ({ category }) => {
  return (
    <TouchableOpacity style={styles.categoryItem}>
      <View style={styles.categoryIcon}>
        <Text style={styles.categoryIconText}>{category.icon}</Text>
      </View>
      <Text style={styles.categoryName}>{category.name}</Text>
      <Text style={styles.categoryDescription}>{category.description}</Text>
    </TouchableOpacity>
  );
};

const ArtClassify: 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.categoriesContainer}>
          {CATEGORIES.map((category) => (
            <CategoryItem key={category.id} category={category} />
          ))}
        </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,
  },
  categoriesContainer: {
    flexDirection: 'row',
    flexWrap: 'wrap',
    justifyContent: 'space-between',
  },
  categoryItem: {
    width: (width - 48) / 2,
    backgroundColor: '#ffffff',
    borderRadius: 12,
    padding: 16,
    marginBottom: 16,
    elevation: 3,
    shadowColor: '#000',
    shadowOffset: { width: 0, height: 2 },
    shadowOpacity: 0.1,
    shadowRadius: 4,
  },
  categoryIcon: {
    width: 50,
    height: 50,
    borderRadius: 25,
    backgroundColor: '#e7f1ff',
    alignItems: 'center',
    justifyContent: 'center',
    marginBottom: 12,
  },
  categoryIconText: {
    fontSize: 24,
  },
  categoryName: {
    fontSize: 16,
    fontWeight: 'bold',
    color: '#333',
    marginBottom: 6,
  },
  categoryDescription: {
    fontSize: 12,
    color: '#666',
    lineHeight: 18,
  },
});

export default ArtClassify;

请添加图片描述


打包

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

在这里插入图片描述

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

在这里插入图片描述

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

请添加图片描述
React Native跨端开发实践解析:本文以艺术分类页面为例,系统阐述了React Native在鸿蒙、Android、iOS等多端适配中的关键技术。重点分析了核心组件选型、全局常量设计、自定义组件封装、数据驱动渲染及动态样式计算等跨端开发要点,展示了如何通过React Native实现"一次编写、多端运行"的开发目标。文章特别强调了TypeScript类型约束、SafeAreaView安全区域适配、Dimensions动态布局计算等技术在多端兼容性中的重要作用,为开发者提供了可复用的跨端开发范式。

React Native 鸿蒙深度适配指南 ‌性能突破‌:关键路径性能指标达到原生应用90%水平‌生态融合‌:无缝接入鸿蒙分布式能力体系‌开发提效‌:保留React Native热重载等特性未来随着ArkCompiler的持续优化,React Native在鸿蒙生态中将释放更大潜力。开发者在享受跨平台效率的同时,也能充分挖掘鸿蒙设备的硬件潜能。‌附录:性能对比数据表‌场景传统RN方案鸿蒙优化方案提升幅度首屏渲染1200ms380ms68%列表滚动FPS42fps58fps38%内存占用218MB156MB。 阅读详情

相关推荐

使用 React Native实现鸿蒙开发的详细方案

通过以上方案,您可以系统性地将 React Native 应用迁移到鸿蒙平台或开发新的跨平台应用。随着官方支持的不断完善,建议定期检查项目依赖版本更新。

老猿阿浪的博客 1823

鸿蒙NEXT(五):鸿蒙版React Native架构浅析

本文详细介绍了鸿蒙版 React Native 架构。包括按功能划分的架构组成,如 RN 应用代码、库代码、JSI、React Common、OpenHarmony 适配代码及 OS 代码等。还阐述了 Fabric、TurboModule、线程模型、命令式组件、启动流程等方面内容。启动流程分为 RN 容器创建、Worker 线程启动、NAPI 方法初始化、RN 实例创建及加载 bundle 等阶段。整体架构复杂且功能明确,为开发者提供了在鸿蒙平台上使用 React Native 的技术支持。

Abinzhao 4331

灰度重心法实战:从原理到MATLAB代码实现激光条纹中心线提取

本文详细介绍了激光条纹中心线提取的核心方法——灰度重心法。通过物理类比阐释其原理,并提供从图像预处理到MATLAB代码实现的完整实战教程。文章重点解析了算法流程、关键参数调整及常见问题避坑指南,帮助读者快速掌握这一机器视觉与三维测量中的基础且高效的技术。

cake8的博客 454

# React Native鸿蒙开发实战:跨平台应用的鸿蒙适配指南

ReactNative在鸿蒙平台的适配与开发实践 本文将全面介绍如何使用ReactNative开发鸿蒙应用的技术方案。首先阐述了环境搭建步骤,包括Node.js、JDK等工具链配置和项目创建流程。其次详细讲解了核心组件如何适配鸿蒙平台,包括基础组件映射、自定义组件开发和样式适配策略。在性能优化方面,重点介绍了渲染优化、内存管理和启动速度提升的实用技巧。同时深入解析了如何集成鸿蒙特有功能,如分布式能力、原子化服务和AI功能调用。最后还包含了调试工具、打包发布流程以及企业级应用案例等实战内容,为开发者提供了一整

qq_45234242的博客 5110

别再为CAD和GIS数据对不上而头疼了!一份完整的ArcGIS for AutoCAD坐标系定义与数据套合指南

本文详细介绍了如何通过ArcGIS for AutoCAD插件解决CAD与GIS数据坐标系不匹配的问题,实现数据的精准套合。文章从坐标系冲突分析、插件核心功能解析到五步标准化工作流,提供了完整的解决方案,帮助工程师和设计师提升跨平台协作效率。

weixin_42531886的博客 207

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3081

React Native鸿蒙跨平台采用了函数式组件的形式,通过 props 接收分类数据,使用 TouchableOpacity实现了点击交互效果

React Native跨端开发实践解析:本文以艺术分类页面为例,系统阐述了React Native在鸿蒙、Android、iOS等多端适配中的关键技术。重点分析了核心组件选型、全局常量设计、自定义组件封装、数据驱动渲染及动态样式计算等跨端开发要点,展示了如何通过React Native实现"一次编写、多端运行"的开发目标。文章特别强调了TypeScript类型约束、SafeAreaView安全区域适配、Dimensions动态布局计算等技术在多端兼容性中的重要作用,为开发者提供了可复用

2401_89578244的博客 4369

linux 内核OOM问题定位-SLAB_DEBUG

首先看slabinfo按的size排序查看 slub object,可以查看 space 总占用大小,及objects个数判断泄漏点 为kmalloc-128。那个泄露多看/sys/kernel/debug的slab/kmalloc*-的alloc-traces和free-traces。SLAB或者SLUB有一个用就可以,改menuconfig没有clean会覆盖之前的更改,现在看一下编译的过程。或者配置defconfig,配置完之后需要clean后再编译。1,配置menuconfig。

陌上花开缓缓归以的博客 896

HarmonyOS ArkTS API 24,React Native鸿蒙跨平台React Native 的stateEffect模拟关闭 Button 默认点击效果

缓存装饰器与参数检查十分相似,不过它重点是关注那些内部状态不会影响输出的函数。每组参数都可以链接到唯一的结果。这种编程风格是函数式编程(functional programming,参见 https://en.wikipedia.org/wiki/Functional_programming)的特点,当输入值有限时可以使用。因此,缓存装饰器可以将输出与计算它所需要的参数放在一起,并在后续的调用中直接返回它。

2301_77888392的博客 672

《大数据最全面试题-Offer直通车》目录

做好这些不用担心试用期不通过:程序员入职新公司如何快速上手项目本人遇到大数据面试题和参考答案(超过1万字精华版)大数据面试英文自我介绍参考(万字长文)大数据运维应用场景面试题汇总及参考答案(持续更新)万字数据仓库面试题及参考答案数据仓库数据质量监控和处理方法最佳实践数据仓库建模方法万字详解Doris的3种数据模型详解和数据仓库每一层的模型选用大数据面试临阵磨枪不知看什么?看这份心理就有底了-大数据常用技术栈常见面试100道题最全Hive面试题2024年(2万字详解)Elasticsearch 面试题及参考答

大模型大数据攻城狮的专栏 2615

DeepSeek赋能公文写作指南(一)

DeepSeek 的出现,为公文写作领域带来了新的曙光。作为先进的人工智能技术,DeepSeek 以其强大的语言理解与生成能力,能为公文写作提供全方位的支持。它可以快速梳理思路,提供丰富的素材参考,辅助优化语言表达,甚至能根据不同的公文类型和场景,生成极具价值的内容框架。《DeepSeek 赋能公文写作指南》正是基于此背景应运而生。本书旨在帮助公文写作者深入了解并充分利用 DeepSeek 这一强大工具,将其融入到公文写作的各个流程中。

通俗易懂学IT 5463

React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,HarmonyOS API 24 实现了分类的实时过滤功能

name。

2401_86113894的博客 974

ICC2: 如何让CTS指定pin多长指定长度

这里create_clock不需要写到sdc里,在脚本里写就行,需要注意的是脚本里存在remove_clock_tree的话,add_buffer就要放remove_clock_tree后面,或者给guide buffer设don't touch也行。跟innovus的操作逻辑一样,如果要让tree上的某一点长长,要先考虑这个点后面的clock tree能正常balance。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?-5意味着长长5ns,相反正值意味着做短。

m0_61544122的博客 671

React Native鸿蒙跨平台Chip组件设计为高度可配置的通用组件,基于HarmonyOS API 24 通过 props 接收标签文本、选中状态、点击回调和可选的颜色属性

Python 的方法解析顺序是基于 C3,这是为 Dylan 编程语言(http://opendylan.org)构建的。在早期版本的 Python 中,所有类并没有一个共同的祖先 object。这里 L[MyClass]是 MyClass 类的线性化,而 merge 是合并多个线性化结果的具体。在 Python 2 中,如果使用的是旧式类(不继承自 object),仍然存在这样的算法。例如,在(Base1,Python 所有的 2.x 版本中都保留了旧式类,目的是为了向后兼容,所以在这些版本中,如。

2401_86113894的博客 762

微信小程序 - 最新实现人脸识别认证功能,使用官方微信小程序人脸识别身份验证接口及常见的人脸核验、用户实名认证、身份证件与人脸是否匹配、是否活体、领取业务人脸认证等各种示例(验证活体人脸是否匹配源码)

微信小程序中实现人脸识别认证,微信小程序人脸识别认证-微信开放接口,如何为微信小程序添加人脸识别和身份验证功能,如何为微信小程序集成人脸识别与身份验证,微信人脸识别实名认证集成指南,识别失败,人脸识别接口怎么调用,前后端完整示例代码demo,微信小程序基于小程序实现人脸识别对比,人脸识别报错,微信人脸核身接口能力,微信小程序实名认证 人脸核验 人脸识别,微信小程序实名认证与人脸核身接口全解析,微信小程序-人脸识别+输出人脸匹配信息,微信小程序实名认证人脸核验人脸识别,微信小程序实名认证:wx.startFa

🏆 前端领域优质创作者 3261

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

React Native鸿蒙跨平台实现Tooltip 组件,HarmonyOS API 24 通过 props 接收提示文本、位置和子元素,位置参数支持四个方向

py.test 中的典型解决方案要容易得多。在我们的例子中,我们使用了 py.test 框架中的 monkey-patching 实用程序,但。在上面的代码中,我们使用了一个新的 pytest.yield_fixture()装饰器。Python 中有很多模拟库,但最常见的是 unittest.mock,标准库中也提供了该库。例中,我们手动执行了一切,并提供了一个自定义的 patch_smtplib()固件函数,具有。创建之初,它是一个第三方包,并不是 Python 分发版的一部分,但很快就作为临时包加入。

2401_86113894的博客 758

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

React Native鸿蒙跨平台如何实现一个待办事项标签栏,完成封装可复用的TabButton组件,HarmonyOS ArkTS API 24 实现标签栏与任务列表的联动展示

这个待办事项应用采用了现代 React Native 组件化架构,通过清晰的职责分离实现了模块化设计。核心组件 作为主容器,负责状态管理和整体布局,而 作为可复用组件,专注于单个标签按钮的渲染和交互处理。这种组件拆分策略不仅提高了代码的可读性和可维护性,也为后续的跨端适配奠定了基础。 组件设计为高度可复用的通用组件,通过 props 接收标题、图标、激活状态和点击回调函数。使用条件样式 实现了激活状态的视觉反馈,这种方式简洁明了,易于维护。 使用 Hook 管理当前激活的标签状态,初始值为 ‘al

2401_86113894的博客 840

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

基于HarmonyOS API 24 React Native鸿蒙跨平台完成新闻资讯应用中的分享与评论功能,支持收藏、分享等交互功能

现在第一个位置参数的命名约定为 cls,说明它已经是一个创建好的类对象(元类的实例),而不是一个元类对象。name、bases 和 namespace 参数的含义与前面介绍的 type()调用中的参数相同,• bases:这是父类的列表,将成为__bases__属性,并用于构造新创建的类的 MRO。然是 type 类的子类(参见图 3-4),因为如果不是的话,这个类将在继承方面与其他的类。metaclass 参数的值通常是另一个类对象,但它可以是任意可调用对象,只要接受。定义了对象实例的类也是对象。

2401_86113894的博客 559

React Native鸿蒙跨平台完成新闻资讯应用中的分享与评论功能,基于HarmonyOS API 24 支持收藏、分享等交互功能

组件采用了现代 React 函数组件架构,结合 Hook 实现了精细化的状态管理。组件通过两个状态变量控制不同的 UI 状态: 存储新闻列表数据, 控制当前激活的标签页。 组件作为独立的子组件,负责渲染单条新闻的详细信息,通过 props 接收新闻数据和回调函数,实现了组件的复用和逻辑分离。这种组件化设计使得代码结构清晰,易于维护和扩展。新闻数据结构设计合理,包含标题、摘要、作者、时间、分类、阅读时间、图片、评论数和收藏状态等属性,满足新闻资讯应用的各种功能需求。应用采用了现代化的移动应用布局设计,主要包

2401_86113894的博客 858

React Native鸿蒙跨平台如何实现分类页面组件HarmonyOS ArkTS API 24 通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能

组件采用了现代 React 函数组件架构,结合useStateHook 实现了简洁的状态管理。组件通过状态变量管理搜索输入,实现了分类的实时过滤功能。组件作为独立的子组件,负责渲染单个分类的详细信息,通过 props 接收分类数据和点击回调函数,实现了组件的复用和逻辑分离。这种组件化设计使得代码结构清晰,易于维护和扩展。

2401_86113894的博客 372

React Native鸿蒙跨平台实现可折叠卡片组件接收外部传入的 category一级分类数据作为 Props,HarmonyOS ArkTS API 24,实现分类卡片的展开/折叠交互

复杂度是通过使用 in 操作符在 result 列表中的查找引入,该操作的时间复杂度是 O(n)。表不是正确的顺序,那么对它进行排序,这是一个至少有 O(nlogn)复杂度的任务。由于 Python 中的 list 类型的实现细节,在列表中搜索特定的值并不是一个廉价的操。此外,如果你的列表已经是有序的,则可以使用 bisect 将新元素插入到该列表中,中的函数主要设计用于插入或查找给定值的插入索引,并且会保留有序序列的顺序。素的索引查找,这种线性复杂度不是特别糟糕,但如果需要许多这样的操作,它可能具有。

2301_77888392的博客 390

基于HarmonyOS API 24,React Native鸿蒙跨平台核心组件(如View、Text、Image、TouchableOpacity、ScrollView等)完成用户中心的页面开发

Python 3 终结了这一分歧,其开发者只能使用被称为新式类的模型。怎样,知道两种模型在 Python 2 中的工作原理仍是很重要的,因为这有助于你移植旧代码。定义好之后,注解可以通过函数对象的__annotations__属性获取,它是一个字典,分重点介绍了与 Python 序列和集合相关的语法特性,也讨论了字符串和字节相关的序列。这也是为什么本章包含关于 Python 2 旧特性的大量内容,尽管本书针对的是最新版的。自定义函数使用的类型的完全可选的元信息,但事实上,它并不局限于类型提示,而且在。

2301_77888392的博客 397

React Native函数式组件在鸿蒙平台的实践与优化

函数式组件作为现代前端开发的核心范式,通过纯函数特性与props数据流机制,实现了高效的UI渲染与状态管理。其技术价值在于提升代码可维护性的同时,配合React Hooks可实现接近原生的性能表现,特别在跨平台场景中优势显著。以React Native开发为例,函数式组件结合TouchableOpacity等基础组件,能够快速构建流畅的交互界面。在鸿蒙平台适配过程中,通过React.memo优化重渲染、Animated API实现动效平滑过渡等工程实践,解决了跨平台样式兼容与性能瓶颈问题。本文以分类列表组件

weixin_31102231的博客 210

HarmonyOS 6.1 实战:基于React Native鸿蒙跨平台实现物流类应用开发时间轴可视化、状态可视化和轨迹展示

在React Native中开发鸿组件(这里指的是鸿蒙(HarmonyOS)组件),你需要了解鸿蒙开发的基础以及如何在React Native项目中集成鸿蒙应用。鸿蒙OS是由华为开发的一个分布式操作系统,主要用于其智能设备,如手机、平板、智能手表等。首先,你需要熟悉鸿蒙OS的开发环境设置和基本开发流程。React Native本身主要用于Harmony和Harmony平台的开发,但你可以通过以下几种方式将鸿蒙应用集成到React Native项目中:A. 使用WebView。

czhm57的博客 987

React Native鸿蒙HarmonyOS ArkTS API 24 实现Tooltip 组件,通过 props 接收提示文本、位置参数支持 top、bottom、left、right四个方向

这个 Tooltip 提示组件采用了高度模块化的设计架构,通过清晰的职责分离实现了代码的复用性和可维护性。核心组件Tooltip作为独立的可复用单元,负责提示信息的显示、隐藏和定位,而作为主容器,负责展示不同场景下的 Tooltip 使用方式。

2401_86113894的博客 401
上一篇: HarmonyOS 6 React Native鸿蒙跨平台ComplexTable作为核心表格组件,负责数据渲染、表头和列固定、排序功能
下一篇: HarmonyOS 6效果实现:React Native鸿蒙跨平台列表类页面跨端开发实践,完成自定义组件封装、Props属性传值、数据驱动的列表渲染、原生组件组合、Flex布局设计、跨端屏幕适配等
czhm57
博客等级 码龄15年 11粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值