├── README.md ├── 关于Redux ├── 第一章更新 ├── 第三章更新 ├── 第二章更新 ├── 第五章更新 ├── 第六章更新 ├── 第十章更新 └── 第四章更新 /README.md: -------------------------------------------------------------------------------- 1 | 至亲爱的读者: 2 | == 3 | 感谢你们的信任,选择购买《React Native跨平台移动应用开发第二版》。笔者才疏学浅,书中难免有各种不足之处,请大家海涵。如果发现了什么问题,欢迎 4 | 在本GitHub中留言。笔者向出版社交稿的时候,书中的内容覆盖了RN 0.42.0版本的绝大部分特性。但到RN以平均每月发布 5 | 一个小版本升级的速度高速发展着。不可避免的,书中的某些语法在使用时,会看到警告声明它们被不建议被使用,或者是已 6 | 经被废弃。笔者在本文中,将这些语法列出来,并列出替换它们的新语法。同时还会记录一些读者需要注意的事项。 7 | 8 | 9 | 一、RN开发环境安装 10 | == 11 | 在笔者向出版社交稿时,RN对Windows环境的支持还是不断的改进中,但现在RN已经正式宣布支持Windows开发环境,并且在官 12 | 方文档中列出了详细的安装步骤。与原来书中描述的步骤有许多不同。因些请读者阅读官方文档相应部分。它们的网址在这里 13 | 再列出一下,英文网址:http://facebook.github.io/react-native/docs/getting-started.html;书中还列出了一个中 14 | 文网址。但现在发现它的更新不及时。因此还是建议读者看英文网址中的英文内容。至少安装这部分仔细看一下,借助电脑的 15 | 翻译功能应当是问题不大的。 16 | 网上有很多安装RN环境的教程与经验,它们中的很多都是老版本的RN开发环境安装经验,请读者安装时以官方文档为准。其它 17 | 文档只能参考。 18 | 强烈建议读者在苹果操作系统下进行RN开发。如果你没有苹果电脑,但你的电脑有16G内存,80G空闲的SSD存储空间,请自行百 19 | 度“虚拟机 苹果系统”。 20 | 21 | -------------------------------------------------------------------------------- /关于Redux: -------------------------------------------------------------------------------- 1 | 很多读者会了解到有个框架叫Redux,并且好象是很高大上的东西。 2 | 我在这里说两个最基本的概念: 3 | 一、如果你不知道是否需要 Redux,那就是不需要它。 4 | 二、只有遇到 React 实在解决不了的问题,你才需要 Redux 。 5 | 6 | 并且Redux通常用在React.js上,除非你的APP结构非常的复杂,不要考虑使用Redux。 7 | 如果你的APP结构非常的复杂,你应当优先考虑简化它的结构,不能简化,再考虑Redux。 8 | -------------------------------------------------------------------------------- /第一章更新: -------------------------------------------------------------------------------- 1 | 请读者先检查下手中的书是第二版第几次印刷,第几次印刷的信息在书的第一页。有一个印次标明了第几次印刷。 2 | 3 | 第一次印刷的书的读者需要从这里开始阅读。 4 | ============================================================================================================= 5 | 1.2 从RN 0.46开始,RN提供了新的开发环境搭建方法。如果按照官方主页上介绍的新的搭建方法搭建并运行后,会要求你在手机上下载一个名为Expo的客户端软件, 6 | 然后用这个软件扫描电脑上的二维码,从而运行RN代码。并且这样搭建出来的工程,只能使用Expo客户端软件调测,无法单独运行。只是方便调测。 7 | 8 | 原来老的开发环境搭建方法(书中描述的方法)仍然有效。大家可以仍然使用书中的方法。 9 | 苹果平台RN项目补丁 10 | 从RN 0.46版本开始,需要使用到boost编译库。RN项目中集成了boost库下载过程。但这个过程在国内经常出错。因此需要开发者手动下载它。它的下载地址网 11 | 页:http://www.boost.org/users/history/version_1_63_0.html。选择图中的boost_1_63_0.tar.gz以下载该文件。该文件大小为93M。下载完该文件后, 12 | 将文件放在/Users/“你的用户名”/.rncache/目录下(如果没有”.rncache”目录就自己创建一个)。注意不管开发者需要建立多少个RN工程,这个操作只需要做 13 | 一次。boost库下载并放在正确的位置后,请重新初始化RN项目,原来编译不过的项目只能删除掉。 14 | 15 | 16 | 第二次印刷的书的读者请从这里开始阅读。上面的更新已经在您的书中更新了。 17 | =============================================================================================================== 18 | -------------------------------------------------------------------------------- /第三章更新: -------------------------------------------------------------------------------- 1 | 请读者先检查下手中的书是第二版第几次印刷,第几次印刷的信息在书的第一页下方。有一个印次标明了第几次印刷。 2 | 3 | 第一次印刷的读者请从这里开始阅读。 4 | ========================================================================== 5 | 3.2 6 | 从RN 0.44开始,RN官方从RN中删除了Navigator组件。如果在原来的RN应用中使用了这个组件,还希望使用这个组件,可以先在窗口模式下,进入项目目录运行: 7 | npm install --save react-native-deprecated-custom-components 8 | 然后在项目中这样导入Navigator组件: 9 | import { 10 | Navigator 11 | } from 'react-native-deprecated-custom-components'; 12 | 本书的原第三章,原第十章的原Navigator组件都可以用这种方式使用。 13 | 14 | 因为原来的第三章是用Navigator组件讲解的,因此提供了新的第三章。 15 | 新的第三章文档的下载地址:https://pan.baidu.com/s/1slAq0Ct 16 | 请读者自行下载本文档,用此文档替代书中的第三章。 17 | 18 | 笔者编写了《React Native跨平台移动应用开发第二版第十章续》文档讲解新的react-navigation组件。 19 | 文档下载地址:https://pan.baidu.com/s/1bKcbjo 20 | 请读者自行下载阅读。 21 | 22 | 23 | 第二次印刷的书的读者请从这里开始阅读。上面的更新已经在您的书中更新了。 24 | ============================================================================================ 25 | -------------------------------------------------------------------------------- /第二章更新: -------------------------------------------------------------------------------- 1 | 请读者先检查下手中的书是第二版第几次印刷,第几次印刷的信息在书的第一页下方。有一个印次标明了第几次印刷。 2 | 3 | 第一次印刷的读者请从这里开始阅读。 4 | ========================================================================== 5 | 2.2.9 6 | 2017年5月16日,React Devtools已经更新版本号至2.1.9。 7 | 有读者在使用Webstrom编辑代码时,无法自动启动React Devtools。关闭Webstrom后就好了。 8 | 9 | 2.2.10 10 | 第35页最后一行,在”按”OK“按钮“前,加入:在by Log Tag输入框中输入”ReactNativeJS", 11 | 12 | 通过PID与Log Tag双重过滤,可以过滤掉一些无用的信息,比只用PID过滤效果好。 13 | 14 | 2.3 15 | 代码2-3-1第17行,password请换为secureTextEntry,从RN 0.44开始,废弃了password属性,只允许使用password请换为secureTextEntry。 16 | 如果使用password,将是一个无用的属性,文本输入框不会有密码输入效果。 17 | 18 | 19 | 第二次印刷的书的读者请从这里开始阅读。上面的更新已经在您的书中更新了。 20 | =============================================================================== 21 | 22 | 在新的RN版本中,刚初始化后项目目录下不再有index.android.js与index.ios.js,而只是一个index.js。这事实上与老版本是兼容的。 23 | 当RN项目目录下有index.android.js时,在android手机(或者模拟器)上调试RN项目会自动去加载index.android.js。 24 | 当项目目录下没有index.android.js时,在android手机(或者模拟器)上调试RN项目会自动去加载index.js。 25 | iOS平台也是同理,有index.ios.js优先加载index.ios.js,否则加载index.js 26 | 27 | 在新的RN版本中,刚初始化后项目目录下index.js非常的短,并且多了个App.js。刚开始接触的读者会觉得与书上的内容不一样。 28 | 仔细看一下,在index.js中,它导入了App.js文件中定义的App组件,然后加载这个组件。 29 | 与老版本RN中(也是书中描述的)在index.android.js(或者index.ios.js)中直接定义组件,然后加载,其实是一回事。 30 | 特此解释一下。 31 | -------------------------------------------------------------------------------- /第五章更新: -------------------------------------------------------------------------------- 1 | 请读者先检查下手中的书是第二版第几次印刷,第几次印刷的信息在书的第一页下方。有一个印次标明了第几次印刷。 2 | 3 | 第一次印刷的读者请从这里开始阅读。 4 | ========================================================================== 5 | 第108页,第一行,请将后半部分中的vs1改为vs2。不好意思,笔误。 6 | 7 | 8 | 第二次印刷的书的读者请从这里开始阅读。上面的更新已经在您的书中更新了。 9 | ============================================================================== 10 | -------------------------------------------------------------------------------- /第六章更新: -------------------------------------------------------------------------------- 1 | 请读者先检查下手中的书是第二版第几次印刷,第几次印刷的信息在书的第一页下方。有一个印次标明了第几次印刷。 2 | 3 | 第一次印刷的读者请从这里开始阅读。 4 | ========================================================================== 5 | 6.8.1.2 6 | 7 | 6.8.1.2中描述barStyle为iOS平台特有属性,从RN 0.43起,它是一个跨平台的属性了。原来开发者需要用原生代 8 | 码设置android手机状态栏颜色,现在可以使用这个属性来设置了。barStyle可取值也多了一个,它们是: 9 | default 默认值,iOS为黑色,android为白色 10 | light-content 黑色背景,字与图标为白色 11 | dark-content 浅色背景,字与图标为黑色 12 | 13 | 14 | 第二次印刷的书的读者请从这里开始阅读。上面的更新已经在您的书中更新了。 15 | ============================================================================== 16 | 17 | 代码6-9-1目前无法运行在RN 0.46之后的版本运行,因为从RN 0.46开始,在onChage属性的回调中不再携带contentSize。如果需要 18 | 获取contentSize,新版RN提供了onContentSizeChange回调属性。但在RN 0.47.1环境中调用onContentSizeChange,无法正确获 19 | 取到高度。我已经向RN社区反映了这个问题。目前只能等待这个bug的修复。 20 | -------------------------------------------------------------------------------- /第十章更新: -------------------------------------------------------------------------------- 1 | 请读者先检查下手中的书是第二版第几次印刷,第几次印刷的信息在书的第一页下方。有一个印次标明了第几次印刷。 2 | 3 | 第一次印刷的读者请从这里开始阅读。 4 | 第二次印刷的书的读者请从这里开始阅读。上面的更新已经在您的书中更新了。 5 | ============================================================================== 6 | 新版第十章下载链接: 7 | https://pan.baidu.com/s/1bKcbjo 8 | -------------------------------------------------------------------------------- /第四章更新: -------------------------------------------------------------------------------- 1 | 请读者先检查下手中的书是第二版第几次印刷,第几次印刷的信息在书的第一页下方。有一个印次标明了第几次印刷。 2 | 3 | 第一次印刷的读者请从这里开始阅读。 4 | ========================================================================== 5 | 对不起,第100页,代码4-2-14第四行写错了。 6 | 原来第四行是:componentWillMount:function() { 7 | 需要将它修改为:ExampleInterface() { 8 | 9 | 第四行定义的是ExampleInterface类的构造函数。 10 | 11 | 并且4-2-14代码中,每个函数后的逗号也是不需要的。 12 | 13 | 第二次印刷的书的读者请从这里开始阅读。上面的更新已经在您的书中更新了。 14 | ============================================================================== 15 | --------------------------------------------------------------------------------