开篇呢,先给大家问个好,今天是中秋节,祝大家中秋节快乐!!虽然是中秋节,但是木有回家还是总结一下知识点写写博客吧,想着昨天总结一下的,但是昨天和几个同学小聚了一下,酒逢知己总是千杯少呢,喝的微醺不适合写东西,所以就留到今天总结了。因为这段时间在工作中陆陆续续的接触到了一些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中常用的布局方式。

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

  1. Vue3安装配置、开发环境搭建(组件安装卸载)(图文详细)

    Vue3安装配置.开发环境搭建(组件安装卸载)(图文详细) 本文目录: 一.vue的主要安装使用方式 二.node.js安装和配置 1.支持运行 Node.js的平台 2.Node.js 版本开发发布 ...

  2. React简介、虚拟DOM、Diff算法、创建React项目、JSX语法、组件、组件声明方式、组件传值props和state、组件的生命周期

    React简介: 前面只是简单介绍移动APP开发,后面还会继续深入介绍移动app开发:其中想要用ReactNative开发出更出色的应用,那么就得学好React,下面将介绍React: React 是 ...

  3. ReactNative入门(一)——环境搭建及第一个RN项目—HelloWorld

    ReactNative入门--本篇以及接下来的几篇有关RN的文章,是默认你对前端相关知识如Node,React,以及原生移动端Android可以熟练使用的情况下(最起码达到了解会用的程度)为前提的!不 ...

  4. 安卓转战React-Native之windows下android环境搭建爬坑血泪史

    前言 最近又有新的项目立项,所以好久都没有写博客了,然后都是利用闲暇时间来学习React-native. 由于安卓和ios的就业环境给移动端开发带来前所未有的冲击,于是乎很多伙伴们不得不另谋他路,然后 ...

  5. react-native for android windows开发环境搭建详细记录

    先说说整个环境搭建的过程.上周开始要在windows上搭建react-native for android环境,当时按照找的教程,从git上clone master分支的代码,然后下载了node,安装 ...

  6. android studio ndk HelloWorld 编译环境搭建

    android studio NDK helloworld 项目 第一步 android studio ndk 编译环境搭建 http://yunpan.cn/c3cCxxgwrqDaL 访问密码 6 ...

  7. ReactNative开发实战一之环境搭建(Windows下)

    作为微信公众号(Zjiaxin)的开山篇文章------我们将从环境搭建开始:(Windows环境下) 1 首先准备必要的软件和工具: Python 2.Node.ReactNative.Androi ...

  8. Angular-cli环境搭建,组件的数据渲染,父子组件传值

    Angular cli-1 博主wx: -GuanEr-,加博主进前端交流群 Angular 脚手架的脚本是 TypeScript 环境搭建 使用 node.js 配置 Angular-cli 的环境 ...

  9. react-native上手之环境搭建及连接模拟器

    使用react-native创建应用app,环境搭建很重要.我使用的是夜神模拟器进行模拟. 环境搭建 1.安装java jdk (1)官网下载java jdk安装包,傻瓜式安装,下一步 下一步 (2) ...

最新文章

  1. 掌握这6大知识点 做光伏会容易很多
  2. linux查看rabbitmq运行状态,RabbitMQ常用命令
  3. GAN Zoo:千奇百怪的生成对抗网络,都在这里了
  4. 蓝桥杯-十六进制转八进制(java)
  5. 近期项目中用到的一些自己写的或者整理而成的前端效果干货(二)
  6. java list断点续传_java实现文件断点续传下载功能
  7. hibernate 别名_Hibernate:在sqlRestriction上使用联接表别名
  8. [js] 写一个方法判断数组内元素是否全部相同
  9. TCP/IP网络协议栈:以太网数据包结构、802.3、MTU
  10. C++STL笔记(X):栏位宽度、填充字符、位置调整
  11. Vue学习笔记之03v-on事件监听
  12. 对数几率回归(Logistic Regression)
  13. HTTP权威指南 笔记
  14. linux查看dubbo版本号,Dubbo 疯狂更新!
  15. r library car_医学统计与R语言:双因素重复测量方差分析(Twoway repeated measures ANOVA)...
  16. pygame:超级玛丽
  17. 类型多样的数码配件免抠元素素材,速来收藏
  18. Jenkins--创建自己的第一个Jenkins任务
  19. 企查查app新增企业数据抓取
  20. 2021-03-04 mysql in里加个参数就查不到??是JSON_EXTRACT导致的,用JSON_UNQUOTE()去掉双引号就正常了

热门文章

  1. 中国钢铁行业产量规模与十四五建设动态分析报告2022-2027年
  2. 中国储能变流器(PCS)产业投资可行性与发展潜力分析报告2022-2028年版
  3. 入选广州粤菜食材生产基地 农业大健康·林裕豪:从玉农业品牌化
  4. 示范园谋定小农户-丰收节交易会·万祥军:衔接现代农业
  5. 农产品区域公用品牌 农民丰收节交易会青岛谋定农业品牌
  6. 拼多多谋定500个供应链品牌 农民丰收节交易会“拼农货”
  7. 农民代言人谋定农业大健康--万祥军:创业路上功能性农业
  8. 小程序中使用threejs
  9. 在继承类中,父类在子类中初始化问题,已解决
  10. Codevs 3002 石子归并 3(DP四边形不等式优化)