最近有点空闲时间,顺手研究下react-native,2013年的时候在老师的指导下使用jQuery Mobile做过手机应用,那个运行速度慢呀!让我对WebApp和PhoneGap这一类的跨平台App没有信心,毕业之后由于长时间做原生开发也就没有再去关注这些东西,最近一年RN风头一直很强劲,搞得我心痒痒,前段时间工作很忙,最近闲下来就玩玩这个.关于RN,最好的学习网站当然还是RN中文网,但是这里有一些知识点不全,新手照着敲可能也见不到效果,于是我做了一个App,把RN的基础知识点包括一些高级知…
数据持久化就是指应用程序将某些数据存储在手机存储空间中. 借助native存储 这种方式不言而喻,就是把内容传递给native层,通过原生API存储,详见从零学React Native之05混合开发 AsyncStorage API RN框架为开发者提供了 AsyncStorage API,开发者可以利用它将任意"字符串键值对"保存到存储空间中. 它是简单的,异步的.用它可以取代Android的sharedperference和ios的NSUserDefault. AsyncStora…
本篇文章首发于简书 欢迎关注 之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 本篇文章主要介绍下下面的知识: 1.简单界面的搭建 2.状态机添加 3.渲染框架简介 4.语法简化 搭建界面 之前我们介绍了如何创建一个应用,现在我们来开发一个简单的注册界面.注释都写在代码里了, 如下: 进入项目目录下,修改下index.android.js(开发IOS程序修改index.ios.js) import React, { Comp…
TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式. 与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本布局.详情见上一篇文章从零学React Native之10Text TextInput属性 只列出了一些常用的,详情见官网 属性名 描述 defaultValue 字符类型,定义TextInput组件中的字符串默认值 autoCorrect 布尔类型,是否自动更正用户输入,默认是true autoF…
之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 从零学React Native之02状态机 本篇主要介绍页面导航 上一篇文章给大家介绍了简单界面的搭建, 这一篇我们需要两个界面, 一个是注册界面,一个是注册信息界面. 当然我们还需要一个组件去控制两个界面的切换. 每个界面其实就一个组件 , 可以通过下面的代码抽取相关的模块 module.exports=RegisterLeaf; 注册界面的代码: 主要代码 import…
最近想在项目中实现跨平台,对比一下主流的实现方式,选用了React Native.参考网上的教程,对于一直都是原生移动端开发,对前端的知识不是很了解的,感觉入门不是特别简单.于是打算把学习React Native的过程记录下来. 环境配置 基本参考React Native中文网搭建开发环境教程 搭建开发环境 安装流程就不详细写了,毕竟平台不同,系统原有软件的版本也不同,就算再详细下出来,也很难涉及全,可参考价值不大,况且React Native中文网写得很全面了. 我自己homebrew,Nod…
大家好,这是跋涉者,wadereye,说来惭愧, 我是从2017年8月25日左右开始学习React Native的,因为时间不多, 在学习的过程中,感觉资料非常零散,要趟过的坑巨多,遇到的问题也非常多. 作为新手,文章看的多,但是开始写具体应用的时候,往往一脸迷茫. 所以,我一边学习,一边把学习React_native写过的测试放和看过的资料在这里,供大家参考 . 我整理的要学RN 之前,最好要掌握的基础知识: HTML基础知识 CSS基础知识 Javascript 基础知识 Node JS基础…
不管在Android还是在ios原生的开发中,图片都是作为控件给出来的,在RN中也有这么一个控件(Image).根据官网的资料,图片分为本地静态图片,网络图片和混合app资源.一下分类介绍来源官网. 静态图片资源 从0.14版本开始,React Native提供了一个统一的方式来管理iOS和Android应用中的图片.要往App中添加一个静态图片,只需把图片文件放在代码文件夹中某处,然后像下面这样去引用它: <Image source={require('./my-icon.png')} />…
这是深入浅出React Native的第三篇文章. 1. 环境配置 2. 我的第一个应用 将index.ios.js中的代码全部删掉,为什么要删掉呢?因为我们准备从零开始写一个应用~学习技术最好的方式就是自己动手写,看别人的代码一百遍的效果也不如自己写一遍来的效果大~ 我们要做的事情主要分成以下两步: 1. 创建组件 2. 将创建好的组件显示在app上 打开index.ios.js文件,输入 var HelloWorld = React.createClass({ render: functio…
通过HTTP或者HTTPS协议与网络侧服务器交换数据是移动应用中常见的通信方式. node-fetch是RN推荐的请求方式. React Native框架在初始化项目时, 引入了node-fetch包 (因为npm3把依赖全部摊平了,node-fetch就在node_modules目录下) 下面就是项目中引入的node-fetch的源码: 联网 联网分为发送请求和接受响应两步.分开来分析下. 发送请求 发送http/https gong细分一下共有6个步骤 1. 确定并准备请求地址与协议 2.…
一个React Native组件从它被加载,到最终被卸载会经历一个完整的生命周期.所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键. ES6语法和之前的ES5语法有所变化,本篇文章是根据ES6语法写的. 在ES5语法中,有getDefaultPropTypes这个函数,这个函数在组件被创建时,调用一次,它的返回值成为了this.props的初始值. 而ES6语法中,属性的类型和默认值声明不像ES5语法那样在组件定义内部声明,而是在组件定义的外部声明,所以…
View 组件是React Native最基本的组件.绝大部分其他React Native 组件. View组件的颜色和边框 backgroundColor 键用来指定颜色. RN 0.19版本开始,只有Text和TextInput组件会继承父组件的背景颜色 Opacity键定义了View组件的透明度, 取值0-1, 0表示完全透明 borderStyle键用来设置边框的风格,只能取值solid, dotted和dashed三个值之一,分别表示实线边框,点状边框和虚线边框, 默认值是solid…
本篇首发于简书 欢迎关注 上一篇文章是时候了解React Native了介绍了React Native.大家应该对React Native有个初步的认识. 接下来我们就可以初始化一个React Native项目了. 创建项目 打开命令窗口,进入我们希望建立的项目目录所在的父目录后,输入命令 react-native init AwesomeProject 其中AwesomeProject是项目的名称.默认init的版本都是ReactNative最新版本,目前最新版本0.30.0.可以通过项目目录…
最近用React Native做了一个APP应用,有点心得: React Native确实比Hybrid应用渲染快,响应快,用户体验更好: React Native比原生简单多了,会Js就可以了,开发速度快,调试简单: 跨平台,平台兼容代码写的少: RN升级迭代太快了,强烈建议对他的组件进行封装再使用: 组件思想很重要,通用的东西封装成组件: 单入口,定义一个global变量来存储通用信息: IOS应用审核真的很严格,各种被拒绝,IPAD崩溃问题.IPV6问题.广告问题等等: 应用启动的时候尽量…
1. 首先创建一个目录(比如ReactNativeDir),用于存放各个ReactNative工程的代码 2.使用React Native命令工具来创建(初始化)一个ReactNative项目(test): react-native init test 使用Atom打开test项目,可以看到有 如下几个重要目录/文件: 目录/文件 说明 __test__  单元测试文件夹 android  原生Android工程文件夹 ios  原生IOS工程文件夹 node_modules  依赖的第三方库目…
本篇主要介绍: 1. 自定义组件 2. Alert 对话框 自定义对话框 之前的我都是利用React Native提供的基础组件对它们进行排列组合, 其实自定义也很简单, 我们还是拿上一篇文章的例子进行扩展. 当我们点击注册的时候,可以弹出一个对话框,让用户确认一下,如下图: 接下来就来试试, 首先在项目目录下创建ConfirmDialog.js 代码如下: import React, { Component } from 'react';import { StyleSheet, Text, /…
在React Native开发中,所有需要显示的字符串文本都需要放置在Text或者Text的子组件中.虽然在之前的文章中多次使用了Text组件,但是Text组件还是值得专门学习的, 并没有想象中的那么简单. 任何一个组件,都有样式和属性,样式一般约束控件的样式和位置,定义在style属性中.属性就是直接声明在控件上. Text样式 Text组件支持View的所有样式键.但是需要注意的是,Text内部的元素不再使用flexBox布局,而是采用文本布局. 这意味着Text组件内部的元素不再是一个个的…
开发过程中, 几乎每个项目都会用到图片. RN就是通过Image组件显示图片.既可以加载网络图片,也可以加载本地资源图片. Image组件必须在样式中声明图片的款和高.如果没有声明,则图片将不会被呈现在界面上. 网络图片加载 加载网络图片非常简单, 直接上代码: 修改index.ios.js或者inde.android.js import React, { Component } from 'react'; import { AppRegistry, StyleSheet, View, Imag…
前面我们接触了好多React Native代码, 并没有介绍RN中的组件具体是如何布局的,这一篇文章,重点介绍下flexbox布局. 什么是flexbox布局 React中引入了flexbox概念,flexbox是属于web前端领域CSS的一种布局方案,是2009年W3C提出了一种新的布局方案,可以简便.完整.响应式地实现各种页面布局.你可以简单的理解为flexbox是CSS领域类似Android中 LinearLayout的一种布局,但是要比 LinearLayout要强大的多. React…
本篇文章,我们主要讨论如何实现Android平台的混合开发. RN给Android端发送消息 首先打开Android Studio, Open工程, 在React Native项目目录下选择android子目录下的build.gradle文件打开. React Native已经默认帮我们创建好了两个类MainApplication和MainActivity public class MainApplication extends Application implements ReactAppli…
React Native 是一个 JavaScript 的框架,用来撰写实时的.可原生呈现 iOS 和 Android 的应用.其是基于 React的,而 React 是 Facebook 的用于构建用户界面的 JavaScript 库,但是这里不是给浏览器解释的,而是为移动平台.换句话说:如果你是一名 web 开发者,你可以使用熟悉的框架和单一的 JavaScript 代码库,即 React Native来撰写清晰的.高效的移动应用. 我们以前都听说过那些个通用的 app 开发,比如框架 Co…
由于一些原因,笔者最近变更到了RN的团队,回归到了hybrid app的开发的圈子中,固然是有蛮多新鲜感和新机遇的,不过遥想起以前在hybrid中各种view之前跳转的头疼等各种问题,笔者怀着忐忑的心情开始了一段波折的hybrid之旅.其实大概的结果之前的文章也有提及了,不过由于大部分只是以“记笔记”的形式描述的,所以难得想抽个时间,好好的总结一下,自己的心路历程. 众所周知,传统的webapp由于只能发挥native80%不到的机能,在性能和能力上一直为人所诟病,而传统的native app又…
React Native 开发越来越火了,web app也是未来的潮流, 现在react native已经可以完成一些最基本的功能. 通过开发一些简单的应用, 可以更加熟练的掌握 RN 的知识. 在学习的过程,发现了一个房产搜索APP的实例,但只有ios版本, 本文主要是房产搜索APP的android版本实现. 原Ios版本 React Native 实例 - 房产搜索App Mystra 原版效果 主要内容: 使用Navigator栈跳转页面. 使用fetch请求网络数据. 使用ListVie…
作为一名有理想.有抱负的一代iOS程序员,本着“我头发够多,还能学”的原则,我选择了追随那些大佬的脚步,于2018年开始了React Native. 第一步:找文档.准备安装开发环境: 第二步:一步步跟着大佬的脚步,去输入命令安装(错了,是复制.粘贴): 第三步:哇!…
前言 在实际的开发中,如果遇到多个组件有一些共性,我们可以提取一个BaseItem出来,然后在多个组件中进行复用,一种方式是通过继承的方式,而今天我们要说的是另一种方式--组装者模式. 什么是组装者模式? 就是在一个类中封装一些共有特性,然后使得在使用的组件中,可以动态的去添加一些属性或者行为,相比较于继承来说,组装者模式会更加的灵活. 实例演示 /** * AboutCommon.js * 组装者模式 模仿一些生命周期函数 */ export default class AboutCommon…
可触摸组件有: TouchableHighlight,TouchableNativeFeedback,TouchableOpacity,TouchableWithoutFeedback 1. TouchableWithoutFeedback,在用户触摸的时候没有反馈任何触摸效果,体验很不好,基本很少使用. 2. TouchableNativeFeedback 是Android操作系统专用组件,使用原生控件相应的状态来展示, 比如5.0以上产生涟漪效果. 3. TouchableHighlight…
Bundling index.ios.js [development, non-minified, hmr disabled] 0.0% (0/1), failed. error: bundling failed: "TransformError: /Users/guochao/Desktop/rndemo/AwesomeProject/index.ios.js: Unexpected token ) (While processing preset: "/Users/guochao/…
一个资深iOS开发者对于React Native的看法 当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道.   我认为一个js开发者可以使用javascript来构建iPhone应用确实是一件很酷的事情,但是我很快放弃了自己去使用它的念头.毕竟我因为爱好而从事ios原生开发多年,并且目前为止已经很熟悉这一套开发专业工具. 我已经创造了一些我引以为傲的iOS应用--一些使用Object-C和Xcode构建的应用,通常人们都是这么做的.这两样工具是苹果…
当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道. 我认为一个js开发者可以使用javascript来构建iPhone应用确实是一件很酷的事情,但是我很快放弃了自己去使用它的念头.毕竟我因为爱好而从事ios原生开发多年,并且目前为止已经很熟悉这一套开发专业工具. 我已经创造了一些我引以为傲的iOS应用——一些使用Object-C和Xcode构建的应用,通常人们都是这么做的.这两样工具是苹果公司提供的.用来开发iOS应用的,所以,我和其他的苹果开发者…
概述 在 前期介绍React Native 项目结构的时候,我们讲解过React的项目组成,其中说过 node_modules 文件夹,这是一个存放 node 模块的地方.我们知道React是用npm来管理项目的.提到npm,一般指两层含义:一是 Node.js 开放式模块登记和管理系统,另一种是 Node.js 默认的模块管理器,是一个命令行软件,用来安装和管理 node 模块. npm 使用介绍 npm 是一个 Node.js 模块,安装 Node.js 会默认安装 npm,可以在终端中使用…