1. Running 1 of 1 custom shell scripts 卡住的问题. 分析: 四个文件没有下载完成. boost_1_63_0.tar.gz folly-2016.09.26.00.tar.gz double-conversion-1.1.5.tar.gz glog-0.3.4.tar.gz 1.下载文件 ---->这里有解决方案: http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%8…
React Native之坑总结(持续更新) Genymotion安装与启动 之前我用的是蓝叠(BlueStack)模拟器,跑RN程序也遇到了一些问题,都通过搜索引擎解决了,不过没有记录. 但是BlueStack有一些问题,比如没有菜单键,模拟器默认是横向的,商业化太严重(本来是用来玩游戏的),界面太丑,等等...... 于是我按照RN中文网的推荐下载了Genymotion模拟器,这一下,就是万劫不复...... 我是在官网下载的Genymotion,自带VirtualBox 5.0.4版本.下…
React Native 填坑一 关于RN的布局 分为主轴和交叉轴, 主轴可以是横向也可以是竖向,交叉轴也是对应的. 主轴默认是竖向.如果要更改用flexdirection 主轴对齐方式:justifyContent 交叉轴对齐方式:alignItems 问题1. 横向排列居中对齐 要改主轴的方向 flexDirection:"row",justifyContent:"center"} 问2.水平布局并铺满的问题 要铺满用flex:1 . 如果发面没有铺满,居中显示…
1.react 基础 (创建组件及在浏览器上渲染组件) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <!-- 1.react.js是React的核心库 --> <script src="js/react.min.js" chars…
最近在使用React Native(以下简称RN)中踩了个坑,RN只能异步调用原生方法,所以在原生方法直接调用UI刷新操作需要将任务递交到主线程才可以. RCT_EXPORT_METHOD(finish) { UIViewController *cVC = [UIViewController getTopViewController]; [cVC.navigationController popViewControllerAnimated:YES]; } 调用的时候可以发现,线程并不是主线程.比…
终于开始新一篇的填坑之旅了.RN厉害的一个地方就是RN可以和Native组件通信.这个Native组件包括native的库和自定义视图,我们今天主要设计的内容是native库方面的只是.自定义视图的使用会在后面讲到. 坑是什么样的坑 主要的是遇到一个业务需求,需要检测当前应用的版本是什么.需要返回当前的版本号和build数. 主要的需求在native来说非常简单: NSString * version = [[NSBundle mainBundle] objectForInfoDictionar…
这次我们来填React Native生命周期的坑.这一点非常重要,需要有一个清晰的认识.如果你了解Android或者iOS的话,你会非常熟悉我们今天要说的的内容. 基本上一个React Native的组件会经历三个阶段最终渲染在界面上,他们分别是:开始渲染.更新.卸载. 开始渲染: componentWillMount componentWillMount(): void 组件开始渲染的时候调用这个方法 componentDidMount componentDidMount(): void 组件…
flow不是React Native必会的技能,但是作为正式的产品开发优势很有必要掌握的技能之一.所以,算是RN填坑之旅系列的番外篇. Flow是一个静态的检查类型检查工具,设计之初的目的就是为了可以发现JavaScript脚本里不容易被发现的错误.在js开发的过程中,总会遇到一些问题.小的还可以,比如用alert或者console等输出一些信息可以debug,并解决.但是如果项目比较大的时候,这些手法只能起到一定的辅助作用.更有甚者,有些问题不运行到那段代码,根本不会发现错误.Facebook…
如同黑夜里的一道光一样,就这么知道了F8. F8是每年一次Facebook每年一次的开发者大会.每次大会都会release相应的APP,iOS.Android都有.之前都是用Native开发的,但是2016的这一次是用React Native开发的. FB开源了RN的App 这次fb不仅开源了纯RN写的App,而且一同发布的还有开发这个App的教程.FB承诺会不断的更新这个app.教程放在make it open.不幸的是这个站点居然被墙了!!!技术博也能被墙,心中跑过一万个草泥马!!!F8的A…
代码在这里: https://github.com/future-challenger/petshop/tree/master/client/petshop/src/controller 回头看看RN的填坑之旅系列,发现一路写下来都是我在开发中遇到的问题如何解决的.兴之所至,不问顺序.于是出现一个问题,填坑系列和学习知识的顺序不是很一致.比如今天要说的布局问题.其实在一个app开发之前,就应该有所了解.否则的话每次看到的<View style={{flex: 1}} />代表的是什么呢?上来就…
React Native的导航有两种,一种是iOS和Android通用的叫做Navigator,一种是支持iOS的叫做NavigatorIOS.我们这里只讨论通用的Navigator.会了Navigator,NavigatorIOS也就不是什么难事了. 本文所使用的是React Native 0.34.FB团队更新的太快了,我会在后续出现大的改动的时候更新本文以及代码. Navigator基础 Navigator在不同的Scene之间跳转. initialRoute对象 这是Navigator所…
列表显示数据,基本什么应用都是必须.今天就来从浅到深的看看React Native的ListView怎么使用.笔者写作的时候RN版本是0.34. 最简单的 //@flow import React from 'react'; import { Text, View, ListView } from 'react-native'; export default class DemoList extends React.Component { constructor(props) { super(p…
动画是提高用户体验不可缺少的一个元素.恰如其分的动画可以让用户更明确的感知当前的操作是什么. 无疑在使用React Native开发应用的时候也需要动画.这就需要知道RN都给我们提供了那些动画,和每个动画可以处理的功能有哪些. 填坑材料Animated 动画API提供了一些现成的组件:Animated.View,Animated.Text和Animated.Image默认支持动画.动画API会调用iOS或者Android的本地代码来完成这些组件的位移.大小等动画.这样各种动画在视觉上可以非常的流…
从React过来,发现React Native(以下简称RN)居然没有Button.隔壁的iOS是有UIButton的,隔壁的隔壁的Android里也是有的.没有Button,就没有点击效果啊.这还真是让人郁闷了. 坑 什么叫Button.略去各种细节可以得出一个定义:可以处理用户点击,在用户按下的时候有按下的效果,松开之后立即回复到原来的效果上. 在React里,可以使用直接使用HTML的元素.比如,<button />或者<input type="button"…
在开发React Native的App的时候,你会遇到很多情况是原生的视图组件已经开发好了的.有的是系统的SDK提供的,有的是第三方试图组件,总之你的APP可以直接使用的原生视图是很多的.React Native提供了一套完善的机制,你可以非常简单的用来包装已有的原生视图. 代码地址:https://github.com/future-challenger/react-native-gaode-map 下面就用高德地图作为例子讲解如何包装原生视图.高德地图本身不仅有视图需要展示,还有一些和Rea…
原文连接:http://www.studyshare.cn/blog-front/blog/details/1137 最近做一个app,使用React Native实现,如果严格按照RN官方文档去配置环境并初始化一个全新的项目,一路走下来,基本上是没有问题的. RN截止目前最新版本是0.58,如果之前的项目要在xcode和android studio上运行起来,可能会遇到各种各样的问题. 运行一些版本比较老的开源项目几个注意点: 1.android sdk 环境变量要配置好,具体参考RN官方文档…
),React Native技术交流4群(458982758),请不要反复加群.欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送! (二)创建React Native项目 须要执行和调试应用.首先我们须要使用react-native init xxproject来创建一个项目,这个步骤尽管在之前我们已经讲过了,只是这边在演示一下. 2.1.命令行执行:react-native init TestOne   [注].该…
项目背景 在项目的初始阶段,我们需要建立自己的design system,我们spike了一些方案,tailwind-rn就是其中一种,如果有用到或者即将用到tailwind-rn的,可以进来看一看,避免踩坑. 后来觉得项目比较简单,tailwind对新上项目小伙伴确实不太友好,所以我们最终没有采用. 简介 GitHub - vadimdemedes/tailwind-rn: Use Tailwind CSS in React Native projects Tailwind 提倡了原子型的CS…
Navigator已经被React Native废弃了.也许你可以在另外的一个依赖库里react-native-deprecated-custom-components里找到.不过既然官方推荐的是react-navigation那我们就来看看这个东西到底有什么好的,值不值得用. 一句话概括的话,react-navigation非常值得用.之前配置一个Navigator非常的繁琐,但是使用react-navigation的任何一个导航组件都非常简单.项目的github地址在这里. react-na…
在React Native里有很多种方法来创建可滚动的list.比如,ScrollView和ListView.他们都各有优缺点.但是在React Native 0.43里增加了两种行的list view.一个是FlatList, 一个是SectionList.今天我们就来详细了解一下FlatList. 如果你熟悉RN之前的ListView的话你会发现FlatList的API更加的简单,只需要给它一列数据,然后根据每一项数据绘制行就可以. 源代码在github上.代码中使用的是RN 0.49.5.…
回归RN,非常开心啊! 在React Native 0.49.5上开发,直接遇到一个ios模拟器的问题.这个问题很简单就是Bundle URL not present. 在网上找了很多的解决方法,都不能用. 最后发现,其实就是访问localhost的时候找不见地址.只要把localhost改成127.0.0.1就可以了.但是从哪里改呢?stackoverflow的方法并不可行,OC的文件早就移动的不知道哪里去了. 于是乎,只好从AppDelegate.m文件里的js code location方…
一.红黑屏,我的天呀,怎么办?睡一觉吧 第一次玩React Native,按着文档来,跑着跑着,咦,红黑屏了. 怎么办?不玩了?那先放着,过两天再来看看咯. 二.粗心大意,原来还有配置没配好 好了,已经过两天了,继续来看. 我是按着文档来的,从安装环境到真机运行,因为之前已经装过安卓的开发环境,以为是没有问题的,就,没怎么去理它. 直到我重新看了一下,哦,还有一个环境变量还没配好: ~~~ c:\Users\你的用户名\AppData\Local\Android\Sdk\platform-too…
Stateless component也叫无状态组件.有三种方法可以创建无状态组件. 坑 一般一个组件是怎么定义的: 很久以前的方法: const Heading = createClass({ render() { return <Text>{this.props.title}</Text> } }) 后来有了ES6 class Heading extends Component { render() { return <Text>{this.props.title}…
如果不能从头到尾的建立一个RN应用,那么RN将失色不少.本以为HTTP请求部分需要使用Native的实现,Android和iOS各回各家,各调各库了.Google了一下之后居然RN可以使用fetch库.这个库是用来代替流传已久的XHR的. 下面看看如何使用fetch 请求Restful API的.API是dribbble的.这个API需要注册,所以如果你要运行下面的例子的话,最好注册一下,或者换一个站点的API试试. 随着ES6,JavaScript内置的支持了Promise这个填补回调地狱大坑…
1.render中如果使用props,直接用this.props.xxx,如果是在JSX中,用{this.props.xxx} 2.警告each child in an array or iterator should have a unique "key" prop. 在<PickerItem ... /> 加一个 key=""; 3.组件id:增加ref="xxx".使用时this.refs.xxx.state.yyyy 4.an…
无论React还是RN都已经迈入了ES6的时代,甚至凭借Babel的支持都进入了ES7.ES6内容很多,本文主要讲解类相关的内容. 构造函数 定义侦探类作为例子. ES5的"类"是如何定义的. function ES5Detective() { console.log('##ES5Detective contructor'); } ES6定义类: class ES6Detective { constructor() { console.log('Detective constructo…
比较精细的动画可以用Animated来控制.但是,在一些简单的界面切换.更新的时候所做的动画里再去计算开始值.结束值和插值器如何运作绝对是浪费时间. RN正好给我们提供了LayoutAnimation来解决这个问题.按照官方的说法:LayoutAnimation就是用于在下一个绘制或者布局周期(render/layout cycle)里处理界面中全部视图的动画的. 下面看一个例子: export default class DemoLayoutAnimation extends React.Co…
报错 Could not install the app on the device, read the error above for details.Make sure you have an Android emulator running or a device connected and have set up your Android development environment 大概意思就是安装app到设备上失败,请确保您已经运行了一个安卓模拟器,然后输入adb devices提…
报错: Unable to load script from assets 'index.android.bundle'. Make sure your bundle is packaged correctly or you're running a packager server. uploading-image-826347.png 原因分析 包管理服务器启动失败或没有启动. 解决办法一: 在项目目录下,运行react-native start,启动packager server. 解决办法…
应用 1 安卓打包 经验 解决方案 ,官方 解决方案 2 调试 用 React-Native-Debugger 教程 3 微信分享和登录 使用 react-native-wechat    地址 设计图来自蓝狐,可以根据里面的尺寸来进行开发,但是左右的间隔需要通过获取设备宽度减两边来得出, 苹果手机用 爱疯6,  安卓需用自定义尺寸. 在苹果上,默认高度是整个手机的高度:然而安卓默认是除了状态栏以下的高度,我们通过Dimensions获取的高度也是不一样的,也就是说,在安卓手机上获取得到的高度也…