React Native 组件基础

news2025/1/16 16:48:08

基于组件的架构模式,或许是现在重展示、重交互应用的最好选择

拆组件要准守一个原则,单一责任原则。

这也是 React 官方倡导的原则,这个原则的意思是每个组件都应该只有一个单一的功能,并且这个组件和其他组件没有相互依赖。当然,完全没有相互依赖是不可能的,但这种思路具有很高的指导价值,一个组件的依赖越少,设计得越好。

例子,一个组件你引用的依赖越多,这些依赖就像陌生的英语单词,你得去其他文件中去查词典,才能知道这些依赖的意思。依赖越多,越难读懂,也越难维护。因此,为了可读性、可维护性、可测试性,就要减少组件的外部依赖,这就是单一责任原则的指导价值。

原生(宿主)组件:生产基础视图的工厂

React Native 中文网:原生组件

在 React Native 中那些最基础、不可再拆的视图材料,大都是由 React Native 框架提供的宿主视图。

而生产宿主视图的工厂,就是宿主组件(Host Components)。这些宿主组件通常是 React Native 框架提供的组件,它们和你用 JavaScript 自定义的组件不同,宿主组件是直接由 iOS/Android 原生平台实现的。

宿主组件上层是 JavaScript 部分,底层是 Native 部分,这两部分是通过 React Native 框架联系起来的。也就是说,你调用宿主组件时,底层直接渲染的是 Native 视图。

复合组件:纯 JavaScript 函数

要创建自定义的宿主组件,你必须写 Native 代码。

但你可以直接用 JavaScript 创建,不用写 Native 代码,这类组件也叫复合组件(Composite Components)。这些复合组件是基于宿主组件或其他复合组件搭建而成的。


export default function Product({product = {name: '苹果', price: '1元'} }) {
  return (
    <View style={{flexDirection: 'row', marginTop: 5}}>
      <Text style={{flex: 1}}>{product.name}</Text>
      <Text style={{width: 50}}>{product.price}</Text>
    </View>
  );
}

自定义复合组件就是一个纯粹的 JavaScript 函数,谁调用它,谁就可以给它传入参数,同样它调用谁,它就可以给谁传入参数,而 JSX 闭合标签就是调用函数的语法糖。

搭建 React Native 静态页面的核心就是搭建组件。它的整体思路是,从上往下拆出组件,从下往上把拆出来的组件进行逐一实现和拼装。宿主组件是最基础的材料,所有我们自定义的复合组件都基于宿主组件搭建出来的,而复合组件又能搭建出更上层的复合组件,这样一步一步,我们才能把静态页面搭建完成。

示例demo:

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper数据模型与Watch机制

数据模型 ZooKeeper 中的数据模型是一种树形结构&#xff0c;非常像电脑中的文件系统&#xff0c;有一个根文件夹&#xff0c;下面还有很多子文件夹。ZooKeeper 的数据模型也具有一个固定的根节点&#xff08;/&#xff09;&#xff0c;我们可以在根节点下创建子节点&#xff0…

华为 WLAN基本配置

华为 无线基本配置 一、前言二、项目拓扑三、项目需求四、配置思路五、配置步骤1. 创建vlan&#xff0c;配置vlan接口ip2. trunk放行对应流量&#xff0c;保证链路可达3.开启DHCP服务&#xff0c;配置DHCP地址池&#xff0c;为AP和终端设备分配IP地址4.WLAN基本配置 六、结语 一…

一文解读类的加载过程(类的生命周期)

目录 概述总览 过程一&#xff1a;Loading&#xff08;加载&#xff09;阶段 加载完成的操作 二进制流的获取方式 类模型与Class实例的位置 数组类的加载 过程二&#xff1a;Linking&#xff08;链接&#xff09;阶段 环节1&#xff1a;链接阶段之Verification&#xff…

第一次的医美体验,决定了客户的回头率

爱美之心&#xff0c;人皆有之。随着人们求美需求的增加&#xff0c;医美消费成为了越来越多人的选择&#xff0c;而这种需求往往不是一次性的。 根据艾媒咨询于2021年发布的一份医美报告显示&#xff0c;30.6%的医美消费受访者只体验了1家医美机构&#xff0c;有78.1%的受访者…

代码随想录算法训练营第六十天 | 84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 本题与接雨水问题的区别是记录每个柱子左边第一个小于该柱子的下标&#xff0c;而不是左边第一个小于该柱子的高度。 因为本题是要找每个柱子左右两边第一个小于该柱子的柱子&#xff0c;所以从栈头&#xff08;元素从栈头弹出&#xff09;到栈底的顺…

恢复误删文件

误删恢复 用losf恢复进程存在的文件 注意此处要后台进程存在 创建一个文件&#xff0c;用tail命令&#xff0c;模拟文件一直被监听 打开另外一个终端&#xff0c;删除这个文件 用lsof命令查看被删除的文件&#xff0c;可以发现文件虽然被删除&#xff0c;但是进程依然在 然后…

Make-A-Video(造啊视频)——无需文字-视频数据的文字转视频(文生视频)生成方法

© 2022 Uriel Singer et al (Meta AI) © 2023 Conmajia 本文基于论文 Make-A-Video: Text-to-Video Generation without Text-Video Data&#xff08;2209.14792&#xff09;。 本文已获论文第一作者 Uriel Singer 授权。 本视频由这句话生成&#xff1a;穿着超人装…

javaweb学生在线考试系统dzkf10程序

打分&#xff09;、系统管理&#xff08;数据备份&#xff09;等功能操作。 以学生的身份在登录页面输入账号和密码&#xff0c;经过数据库身份验证&#xff0c;验证成功后登录系统主页&#xff0c;可以使用个人资料管理、试卷查看、在线考试、在线答疑、个人考试成绩查询等功能…

微任务宏任务详解题目

注意点&#xff1a;我们的异步任务1和异步任务2并不是直接放在任务队列里面&#xff0c;而是先挂载到我们相应的线程下面&#xff01;&#xff01;&#xff01; 假如说我们的宏任务执行得很快&#xff0c;100ms就执行完了&#xff0c;那么我们就会去轮询我们的任务队列&#x…

C++linux高并发服务器项目实践 day3

Clinux高并发服务器项目实践 day3 文件IO标准C库IO函数与LinuxIO函数虚拟地址空间文件描述符Linux系统IO函数open与close mode:八进制的数&#xff0c;表示用户对创建出的新的文件的操作权限 最终的权限是&#xff1a;mode & ~umask 0777 r(读) w(写) x(可执行)都有这样的权…

2021遥感应用组二等奖:近20年黄河流域植被动态与生态环境效应

作品介绍 1 研究目的 基于MODIS NDVI植被指数、土地利用数据和气象数据集&#xff0c;辅以趋势分析、偏相关分析、马尔科夫转移矩阵变化分析、多元回归分析等方法&#xff0c;全面分析黄河流域2001-2020年植被时空变化特征&#xff0c;并通过构建统计模型方式&#xff0c;定量…

【Seata】Seata配置上传Nacos

前言 在seata1.4.2版本之后&#xff0c;Seata可以通过dataId配置seata的所有配置项&#xff0c;也就是说&#xff0c;我们可以将之前上传的所有配置项整合到一个配置文件中&#xff0c;接下来直接演示该怎样操作。 如果你不清楚seata的config.txt文件在哪里下载或者其它的一些…

c++11 标准模板(STL)(std::queue)(五)

定义于头文件 <queue> template< class T, class Container std::deque<T> > class queue; std::queue 类是容器适配器&#xff0c;它给予程序员队列的功能——尤其是 FIFO &#xff08;先进先出&#xff09;数据结构。 类模板表现为底层容器的包…

kali相关操作

目录 kali换源&#xff1a; 由于没有公钥&#xff0c;无法验证下列签名&#xff1a; NO_PUBKEY 871920D1991BC93C 安装中文 设置中文输入法 kali换源&#xff1a; sudo su 备份相关配置 cp /etc/apt/sources.list /etc/apt/sources.list.bak vim /etc/apt/sources.list替…

搭建SFTP服务安全共享文件,实现在外远程访问「内网穿透」

文章目录 1.前言2.本地SFTP服务器搭建2.1.SFTP软件的下载和安装2.2.配置SFTP站点2.3.Cpolar下载和安装 3.SFTP服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的网络发达&#xff0c;个人电脑容量快速上升&#xff0c;想要保存的数据资料…

最近,我们做了一次“实景”容灾演练

保障头部新闻客户端的业务连续性&#xff0c;阿里云帮助客户在真实场景下完成容灾演练。 云计算和新闻 APP&#xff0c;能有什么关系&#xff1f; 2021 年&#xff0c;传媒行业某头部媒体的新闻客户端进行了全新改版并升级上线&#xff0c;以 “内容技术”的融合驱动效率提升&a…

Vue2-黑马(十)

目录&#xff1a; &#xff08;1&#xff09;vuex-actions &#xff08;2&#xff09;vuex-调用actions &#xff08;3&#xff09;vue2实战-项目搭建 &#xff08;1&#xff09;vuex-actions 有这么一个需求&#xff0c;绿色的组件从服务器获取数据放入store&#xff0c;主…

CHAPTER 2: 《BACK-OF-THE-ENVELOPE ESTIMATION》 第2章 《初略的估计》

CHAPTER 2: BACK-OF-THE-ENVELOPE ESTIMATION 在系统设计面试中&#xff0c;有时您会被要求估计系统容量或使用粗略估计的性能需求。根据杰夫迪恩的说法&#xff0c;谷歌高级研究员&#xff0c;“粗略的计算是你使用结合思想实验和常见的性能数字&#xff0c;以获得良好的感觉…

武器目标分配问题研究进展: 模型、算法与应用

源自&#xff1a;系统公正与电子技术 作者&#xff1a;李梦杰 常雪凝 石建迈 陈超 黄金才 刘忠 摘 要 武器目标分配问题是指挥控制与任务规划领域的关键难点之一, 也是军事运筹领域的基础研究课题。经过多年研究, 武器目标分配问题在陆海空天电等领域都得到了广泛研究,…

ESLint插件开发

ESLint 插件 ESLint 插件是一个可以包含一系列ESLint 规则、配置、处理器、环境的npm模块。 创建插件 开发ESLint插件可以使用Yeoman提供的生成器来生成ESLint插件的基本项目的目录结构。 安装yeoman 和ESLint 规则的生成器 npm i -g yo generator-eslint创建eslint-xxxx使用y…