前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ReactNative之从HelloWorld中看环境搭建、组件封装、Props及State

ReactNative之从HelloWorld中看环境搭建、组件封装、Props及State

作者头像
lizelu
发布于 2018-09-28 08:20:16
发布于 2018-09-28 08:20:16
9380
举报
文章被收录于专栏:青玉伏案青玉伏案

开篇呢,先给大家问个好,今天是中秋节,祝大家中秋节快乐!!虽然是中秋节,但是木有回家还是总结一下知识点写写博客吧,想着昨天总结一下的,但是昨天和几个同学小聚了一下,酒逢知己总是千杯少呢,喝的微醺不适合写东西,所以就留到今天总结了。因为这段时间在工作中陆陆续续的接触到了一些RN开发的东西,还是需要总结一下的。今天只是个开篇,接下来还会有陆陆续续的关于RN开发的总结,今天主要是环境搭建、简单的组件封装、Props和State的介绍,稍后还会更新布局、动画等一些开发中常用的东西。

虽然RN没有Release版、虽然Airbnb放弃了RN、虽然Facebook正在重构RN, 但是RN还是动态化比较好的选择方案的,还是要好好的搞一下RN的,当然也是工作中需要。既然要搞,就得认真呢,这篇是关于RN的第一篇博客,后续还会有其他关于RN的博客跟进的,也好在自己的学习历程中打个Tag。今天博客比较简单,是RN入门级别的,当然进阶的东西目前还没有接触过,等深入后再展开来记录吧。

RN官方文档(https://facebook.github.io/react-native/docs/getting-started

一、RN下的Hello World

接触一个新的东西那必须从HelloWorld开始呢,下方就一步步的从无到有搞一个RN的Hello World!

1、安装Node和VSCode

首先我们来搞一下Hello World前的准备工作,使用RN时,Node环境是必不可少的,如果你没有Node环境可以使用brew进行安装。(如果你还没安装Homebrew, 那么请Google自行安装)

brew install node

然后可以把node的源更新成taobao的镜像,这样访问速度会快一些。

npm config set registry https://registry.npm.taobao.org --global npm config set disturl https://npm.taobao.org/dist --global

装完Node后,然后就是选择安装一个开发RN的IDE了,当然你如果够强大,完全可以用记事本来编写RN的代码。当然用记事本是开玩笑的,可以用Sublime Text、Visual Studio Code等,如果比较土壕的程序员呢,你可以支持一下正版的Webstorm。当然想我这样“温饱都成问题”的程序猿,就只能用免费的VSCode了。

官方地址:https://code.visualstudio.com/

虽然本篇博客使用的VScode,但是平时开发中用WebStorm感觉还是挺爽的。

2、安装 exp

直接在模拟器上调试,依赖于exp这个App,下方这个命令就是安装exp。安装完后,会在模拟器上看到Expo这个App, 下方我们就会用到这个Expo。

npm install exp --global

3、create-react-native-app and run app

安装完Node后,使用Node的npm把create-react-native-app这个包装一下,可以快速的创建一个RN-Project。

然后使用create-react-native-app可以创建一个RN工程了,下方创建了一个名为MyFirstRNProject的RN工程。

创建完相关的RN工程成功后会有相关的提示,我们还是按照其提示的俩,使用 yarn start 来启动工程。

启动后,会让你选择相关的运行方式,因为本篇博客是在iOS环境下做的Demo,所有就直接选择 i 即可。

 选择 i 后,就会启动模拟器中的Expo。可以用 command + D 来调用和隐藏开发调试面板。然后就会看到右边红框找那个的默认的文案。

我们可以将默认的文案改一下,然后修改一下样式,添加上我们的Hello World保存即可。因为默认Live Reload是打开的,所以当相关的文件被修改后,模拟器上的工程会自动Reload加载改动后的效果,具体如下所示:

在上面的代码中我们还需注意到下方定义了一个 styles 的常量,该常量是我们需要的样式对象。在RN中可以使用 StylesSheet.create()方法来创建我们需要的样式。改样式的定义规则与Web前端中的CSS差不多,使用方式页非常的相似。下方我们还会定义其他的样式表,稍后会介绍到。

二、使用TypeScript来开发RN

因为之前使用的另一个动态化的框架是用TypeScript来开发的,想在RN中也用TypeScript来开发,当然其默认的js语言的。在RN中支持TS开发,有相关的文档(https://github.com/Microsoft/TypeScript-React-Native-Starter

然后把工程中的App.js替换成App.tsx即可。(纯ts文件使用.ts来命名,有JSX的TS文件则使用tsx来做后缀),改完再次运行我们的Hello World即可。

三、自定义组件(Componet)、Props以及State

实现完HelloWorld后我们来看一下RN中组件封装的姿势,下方会封装一个HelloWorld的组件,然后在该组件的基础上看一下RN中Props和State的使用姿势。

1、HelloWorld组件封装

在RN中封装的组件都需要继承自 Component 类,然后在该类中正常的去添加相关布局和相关逻辑即可。下方我们将上述的HelloWorld进行了提取,创建了一个HelloWorld类,该类继承自React中的Component。然后在render()方法中通过JSX来添加需要渲染的各种组件,当然在我们的HelloWorld中,我们只用到了Text这个组件来展示文字。

封装的组件的使用姿势与RN提供组件的使用姿势是一样的,都是通过JSX的语法来引入使用的。下方 <HelloWorld /> 就是我们封装组件HelloWorld的使用姿势。

2、Props - 属性

属性,说白了就是一个组件负责接送外部参数的一个东西,类似于一个方法的参数。当然,如果你使用一个Function来定义一个组件的话,那么这个Props就是方法的参数。

在上面的HelloWorld的示例中,我们其实已经使用到了Props这个东西,只不过是系统自带的,比如上面为HelloWorld指定的 style 就是一个props, 该props传入的是一个样式对象。我们从Web前端的角度来说,属性这个东西应该是比较好理解的,div后边跟的key 和 value, 后边这个value就是相关key的属性。接下来我们将要介绍如何给自定义的组件添加特定的属性。

下方我们写了一个HelloWorld的组件,该组件继承与React中的Component,然后在render中渲染了一些组件,其中的Text是从属性Props中取的,从下方代码中看出,直接从Props中取相应的Key是可以取到的,不过强取值的话,会标红,会提示相关的熟悉在Props中不存在。稍后会解决该问题。

下方就是我们写的Hello Props组件,组件中的相关内容时通过Props中的相关key-value来传过来的。换句话说,Props就是一个传值的JSON串。

通常我们在开发中会为Props定义相关的类型,来声明Props中都有哪些东西,下方就是我们为上述的HelloWorld补的Props的类型,然后通过协议的形式指定给HelloWorld组件。从下代码我们看出,在Props类型后边还有一个null的类型,该类型是声明State的类型使用的。该处我们没有相关的状态,就暂且不指定,下方使用到的地方我们会给出相关的状态值。

添加完相关的类型声明后,之前下方标红的地方就不存在了。

3、State-状态

状态对应RN来说有着举足轻重的地位,整个RN的页面或者一个小的RN组件都可以看做是一个状态机,该状态机就是通过这个State来管理的。State中可以存放各种状态以及各种值,当这些值或者状态被修改时,那么这个组件节点就会被重新渲染,也就是更新页面或者组件。下方我们就为我们的HelloWorld添加上相关的State状态,然后通过该状态所对应的值做一些事情。

  • 声明State类型:首先我们像声明之前的Props类型一样声明了一个HelloWorldStateType的状态类型,然后HelloWorld组件中状态类型的位置设置了该类型。改类型中有一个属性,从状态属性我们不难看出是用来控制某个空是否展示白色的。
  • 初始State:我们指定状态类型后,该状态还需要一个初始状态,于是在构造器中对该状态进行了初始化。
  • 定时器修改状态:然后我们用定义了一个定时器,使用定时器来定时的修改状态的值,这样便于我们观察状态修改后的变化。定时器的作用就是“隔一秒改一下时间”(下方有个错别字,就不改了)
  • 最后就是在渲染的render方法中获取相关状态值进行使用了。该状态最终用来控制字体颜色的变化。

下方就是上述代码运行的相关效果,从下方的效果中不难看出,没个一秒文字的颜色会随着状态而修改。

 今天博客就先到这儿,该做饭去了,下篇博客会总结一个RN中常用的布局方式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
跨链桥是否有安全的未来?
Chainalysis估计,在13次单独的跨链桥黑客攻击中,有20亿美元的加密货币被盗,其中大部分是今年被盗的。到目前为止,对跨链桥的攻击占2022年被盗资金总额的69%。
小将
2022/10/11
7510
跨链桥是否有安全的未来?
什么是跨链桥?
    在过去的几年里,许多新的支持智能合约的公共区块链已经上线,这就产生了加密货币领域跨链互操作性的需求。目前,该领域的开发人员正在努力构建跨链架构,以促进不同区块链之间的通信。 
终有链响
2024/07/29
1530
跨链桥怎么了?谈跨链桥的风险、现在及未来
文章中提到的项目有: 以太坊 2.0[6], Cosmos[7], IBC[8], Layer Zero[9], Solana[10], Serum[11], Optimistic Roll-ups[12], StarkNet[13] , [Terra] (https://www.terra. money/), [THORChain](https://thorchain.org/ "Terra] (https://www.terra. money/ "Terra] (https://www.terra. money/), [THORChain"), [THORChain"), Osmosis[14], Anyswap,[15] Wormhole[16], Ronin Bridge[17], Terra Bridge[18], Avalanche Bridge[19], Ren Bridge, [20] Axie Infinity[21]
Tiny熊
2022/11/07
1.7K0
跨链桥怎么了?谈跨链桥的风险、现在及未来
150亿数字加密货币被盗的真相之后,还能拿什么拯救你,我的交易所!
从去年年底开始,我就一直关注数字加密货币的动态。因为之前有9年的算法对冲基金的从业经验,很自然的,我被加密货币交易动态所吸引了。虽然我并不是加密货币的忠实信徒,但是,我希望对新的交易技术有一个全新的认识。除了ICO狂热之外,加密货币技术中还有一些有趣的创新,尤其是在去中心化交易所的概念。
区块链大本营
2018/08/03
5810
150亿数字加密货币被盗的真相之后,还能拿什么拯救你,我的交易所!
一个月疯狂窃取5.4亿美元,Lazarus Group黑客组织拿钱造火箭
近日,美国财政部指控有朝鲜政府背景的黑客组织Lazarus Group3月从Axie Infinity 侧链 Ronin Network疯狂盗窃了5.4亿美元。
FB客服
2022/06/08
5170
一个月疯狂窃取5.4亿美元,Lazarus Group黑客组织拿钱造火箭
10 大趋势带你预见 DeFi 2020!
本文是加密货币研究平台 Messair 近日发布的《Crypto Theses for 2020》报告的节选部分,将探讨 DeFi(Decentralized Finance,去中心化金融)在接下来的2020年具有哪些趋势,观点仅代表原作者,不构成任何投资意见或建议。Enjoy~
区块链大本营
2020/02/21
5550
10 大趋势带你预见 DeFi 2020!
Plutos 网络简介
Plutos Network 是一个跨链合成发行和衍生品交易平台,为用户引入挖矿激励和 Staking 奖励。通过整合Polkadot、BSC 和 Solana等区块链,实现链上和跨链流动性和交易,Plutos Network 将为用户提供各种可持续、盈利和颠覆性的合成产品的合成发行和交易服务到传统的衍生品市场。
公众号---人生代码
2021/07/08
8000
Plutos 网络简介
跨链桥为什么在DeFi中非常重要?
在区块链生态系统中,最令人兴奋的领域之一是去中心化金融(DeFi),甚至引发了传统金融机构的关注和革新。但是,试图将BNB与ETH进行相互转换的经历,实际上并不像看起来的那么简单。
小将
2022/04/16
3400
跨链桥为什么在DeFi中非常重要?
NFT在DeFi中的用例 NFT相关软件开发
NFTs是在区块链上经过验证的独特数字资产,可以代表从数字艺术到虚拟房地产的任何事物。它们还可以用作抵押品以在 DeFi 中获得贷款,从而创造一种获取资金和为创意项目融资的新方式。NFT 贷款协议的主要好处之一是它们允许更高效的贷款流程。在传统金融中,贷款过程可能漫长而繁琐,涉及大量中介机构和大量文书工作。在 DeFi 中,贷款可以通过 NFT 进行担保,整个过程可以自动化,从而使其更快、更高效。使用 NFT 作为抵押品是它们提供了一种新型资产,可用于在 DeFi 中抵押贷款。与股票或房地产等传统资产不同,NFT 是独一无二的,无法复制。
飞机号dapp119
2023/02/15
8230
NFT在DeFi中的用例 NFT相关软件开发
大会前瞻 | 全能美女王奇君带你认识稳定币及其应用
2018以太坊技术及应用大会·中国 倒计时 2 天 6月3日,中国年度最具影响力的以太坊技术社区大趴:2018以太坊技术及应用大会·中国,将在北京·悠唐皇冠假日酒店举行。邀请到众多国内外顶级开发者参加,以太坊的创立者Vitalik Buterin本人届时也会亲临现场! 这里,有1000+以太坊开发者,以及优质的资本、项目和法律机构,让你一站打尽以太坊全生态! 她曾是4A数字营销广告公司的策略师,也是新东方的雅思讲师;她是资深行业翻译的口译员;也曾担任过全球最大的比特币钱包和区块链浏览器blockchain
区块链大本营
2018/06/19
5160
100 多家 Web3 公司重构互联网的未来
投资者正在向热门的 Web3 技术投入资金。但是 Web3 是如何运作的,谁在构建?从去中心化金融到靠玩游戏赚钱的游戏,我们分析了当今的 Web3 及其对消费者和创作者的意义。
点滴科技资讯
2023/03/01
1.5K0
100 多家 Web3 公司重构互联网的未来
2019年度区块链安全复盘总结
如果说2018年,我们做区块链安全拥有了“上帝视角”,那过去的2019年,我们则收获了“圣母心态”。
区块链大本营
2020/02/21
6110
2019年度区块链安全复盘总结
关于区块链,你绝不能忽视的4个安全问题和5招应对方法!
内容 | 万涛 IDF极安客实验室联合创始人 整理 | Aholiab 说起区块链,虽然为人大肆谈论,却一直绕不过一个令人尴尬的问题——关于数字资产的丢失、被盗问题屡见不鲜,包括之前币安的安全事件也引起了业界的轰动。 那么,区块链安全的现状到底是什么?区块链与加密货币究竟存在哪些安全问题?如何构建安全的智能合约?IDF极安客实验室联合创始人万涛认为,如果不顾安全大谈区块链都是「耍流氓」;如果以安全的名义去鼓吹区块链,却没有实质的行动,则属厚颜无耻。近日,万涛给「区块链大本营」讲了区块链安全的那些事儿。 那
区块链大本营
2018/05/11
1.3K0
2024 年加密领域需要注意的 5 大网络安全威胁
让我们深入研究2023年加密领域的一些关键网络安全趋势,预计这些趋势将持续到 2024 年,对更多加密货币用户造成威胁。
星尘安全
2024/09/15
1380
2024 年加密领域需要注意的 5 大网络安全威胁
什么是加密货币中的流动性挖矿?
在去中心化金融(DeFi)出现之前,加密货币的所有者只能持有或交易它们以从其资产中获利。然而,DeFi 流动性挖矿地出现在某种程度上改变了游戏规则。
小将
2022/09/30
1.6K0
什么是加密货币中的流动性挖矿?
加密货币: 数字货币如何改变金融
上周,Twitter首席执行官Jack Dorsey宣布,他同时经营的金融公司Square将推出一个新的平台,将使用比特币创建去中心化金融项目。在这些天马斯克围绕加密货币习惯性的、持续的网络噪音输出中,你能不给Dorsey的举动以时间吗?Square的项目最终可能会作为一个分水岭被记住,而那也会是去中心化金融,或 "DeFi",最终进入主流的时刻。
用户7358413
2021/07/25
1.3K0
2024 年加密货币领域需要注意的 5 大网络安全威胁
加密货币世界主要存在于数字领域,面临着众多不断变化的网络威胁,这些威胁所带来的风险,给个人和企业组织造成了重大损失。
FB客服
2024/01/04
2980
2024 年加密货币领域需要注意的 5 大网络安全威胁
DeFi中的De是什么意思?这对区块链行业意味着什么?
作者 | Oscar W 翻译 | 火火酱,责编 | Carol 出品 | 区块链大本营(ID:blockchain_camp) 区块链这一概念最早是由Stuart Haber和Scott Stornetta在1991年提出的。直到2008年,中本聪(Nakamoto Satoshi)将第一个区块链概念化,并创造了比特币。从那时起,无数的项目涌现出来,希望能够彻底改变区块链领域。 然而,直到2015年,一位名为 Vitalik Buterin(V 神)的天才创造了以太坊,才迈出了改变的关键性一步。以太坊
区块链大本营
2023/03/31
7480
DeFi中的De是什么意思?这对区块链行业意味着什么?
2019年区块链安全事件总结,全球损失超60亿美元 | 盘点
随着现代化信息技术和应用的快速发展,数字资产这种以计算机信息技术为基础的货币形式应运而生。其可追溯、防伪造、防篡改的特性,提升了交易安全性,2019年已成为业界关注的热点,发展十分迅速。
区块链大本营
2019/12/23
4.4K0
2019年区块链安全事件总结,全球损失超60亿美元 | 盘点
Solana 是 DeFi 的未来吗?
最近几周,区块链 Solana 的本地货币 SOL 的价格飙升。从 8 月 25 日星期三的略高于 67 美元,SOL 已飙升至目前的 145 美元(截至 9 月 6 日),在短短 12 天内上涨了 100% 以上。
公众号---人生代码
2021/09/18
1.4K0
Solana 是 DeFi 的未来吗?
推荐阅读
相关推荐
跨链桥是否有安全的未来?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档