React Native的Text
用于显示文本的React组件。 文本支持嵌套,样式和触摸处理。 在以下示例中,嵌套标题和正文文本将从styles.baseText继承fontFamily,但标题提供了自己的附加样式。 标题和主体将叠加在一起,因为文字换行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
用于显示文本的React组件。 文本支持嵌套,样式和触摸处理。 在以下示例中,嵌套标题和正文文本将从styles.baseText继承fontFamily,但标题提供了自己的附加样式。 标题和主体将叠加在一起,因为文字换行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
使用React Native,不要使用特殊语言或语法来定义样式。 你只需使用JavaScript来设计你的应用程序。 所有的核心组件接受props
命名风格。 样式名称和值通常匹配CSS在Web上的工作方式,除了名称被写为backgroundColor而不是像background-color。
样式prop可以是一个普通的旧JavaScript对象。 这是最简单的,我们通常用于示例代码。 您还可以传递样式数组 - 数组中的最后一个样式具有优先级,因此可以使用它来继承样式。
由于组件的复杂性增加,使用StyleSheet.create在一个位置定义多个样式通常更加清晰。 这里有一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
有两种类型的数据控制组件:props和state。 props由父节点设置,它们在组件的整个生命周期中都是固定的。 对于要改变的数据,我们必须使用状态。
一般来说,你应该在构造函数中初始化状态,然后当你想改变它时调用setState。
例如,假设我们想让文本一直闪烁。 文本本身在创建闪烁组件时设置一次,因此文本本身是一个props
。 “文本是否当前打开或关闭”随时间改变,所以应保持状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
大多数组件可以在创建时使用不同的参数进行自定义。 这些创建参数称为props
。
例如,一个基本的React Native组件是Image。 当您创建图像时,可以使用prop命名source
来控制其显示的图像。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
props
,我们可以自定义Greeting组件,因此我们可以为每个问候重复使用该组件。 此示例还在JSX中使用Greeting组件,就像内置组件一样。 做到这一点的力量是什么使React这么酷 - 如果你发现自己希望有一组不同的UI原语来工作,你只是发明新的。
Read on →
什么是JSX。我们先看一段代码,考虑这个变量声明:
1
|
|
您可以通过将其包含在大括号中来在JSX中嵌入任何JavaScript表达式。 例如,2 + 2,user.name和formatName(user)都是有效的表达式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
编译后,JSX表达式成为常规JavaScript对象。这意味着您可以在if语句和for循环中使用JSX,将其分配给变量,将其接受为参数,然后从函数中返回:
1 2 3 4 5 6 |
|
React 是一种声明性、高效和灵活的JavaScript库来构建用户界面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 |
|
。每个组件都包含因此他能独立操作,允许你构建复杂的UI通过简单的组件。
通过下面的例子来讲解React: Read on →
Redux是一个可预测的javascript应用程序的状态容器。 它可以帮助您编写行为一致,在不同环境(客户端,服务器和本机)中运行的应用程序,并且易于测试。 此外,它提供了一个伟大的开发者体验,如实时代码编辑结合一个时间旅行调试器。
您可以与React或任何其他视图库一起使用Redux。 它是微小的(2kB,包括依赖)。 从其创建者学习Redux:Redux学习入门
我在工作在我的React Europe谈话时写了Redux,名为“Hot Reloading with Time Travel”。 我的目标是创建一个状态管理库,具有最少的API,但完全可预测的行为,所以可以实现日志记录,热重新加载,时间旅行,通用应用程序,记录和重放,没有任何从开发人员买入。
Redux演化了Flux的想法,但通过从Elm提取线索来避免其复杂性。 无论您是否使用过它们,Redux只需要几分钟的时间就可以开始使用。
安装稳定版本:
1
|
|
redux
npm包包括在dist文件夹中预编译的生产和开发UMD版本。 它们可以直接使用而无需捆绑器,因此与许多流行的javascript模块加载器和环境兼容。 例如,可以将UMD构建作为script标记放在页面上,或者告诉Bower安装它。 UMD构建使Redux可用作window.Redux
全局变量。
Redux源代码是在ES2015中编写的,但我们将CommonJS和UMD构建预编译为ES5,因此它们可在任何现代浏览器中使用。 您不需要使用Babel或模块捆绑包来开始使用Redux。
1 2 |
|
应用程序的整个状态存储在单个存储中的对象树中。 改变状态树的唯一方法是发出一个动作,一个描述发生了什么的对象。 要指定动作如何转换状态树,您需要编写纯reducer。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
当我们想在现有的iOS开发工程中加入React-Native这个模块的时候,我们需要做一些准备工作。<我假设已经安装了homebrew>安装需要的工具:npm
1
|
|
npm install
高很多。
安装好了npm之后,我们创建一个package.json文件,内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
yarn
,回车一按,自动查找需要安装的packages
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 |
|
Pod install
。等待安装完成。此时React-Native模块已经加入到我们iOS的工程里了。
Read on →
一个越狱设备,一台Mac设备。
1、openssh
修改ssh -> congifure prot
修改ssh的密码
2、adv-cmds cycript 安装在越狱设备上
3、ssh root@192.168.1.8 (设备的IP)
4、ps -e | grep WeChat
1 2 3 4 5 6 |
|
5、砸开
class-dump –arch armv7 WeChat.decrypted -S -s -H -o /Users/Rick/Documents/ios/isere/WeChatHeader
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
看到这些log就能看到砸开所有的文件,下面是我砸开的微信定义函数文件
Java中的编程主要基于构建数据类型。 这种编程风格被称为面向对象编程,因为它围绕着对象的概念,对象是一个保存数据类型值的实体。 对于Java的原始类型,我们主要局限于对数字进行操作的程序,但是对于引用类型,我们可以编写操作字符串,图片,声音或者在Java标准库中或在我们的书站上可用的数百个其他抽象中的任何一个 。 比预定义数据类型的库更重要的是,Java编程中可用的数据类型范围是开放式的,因为您可以定义自己的数据类型。
1. 数据类型。 数据类型是一组值和一组对这些值的操作。
2. 抽象数据类型。 抽象数据类型是其内部表示对客户端隐藏的数据类型。
3. 对象。 对象是可以接受数据类型值的实体。 对象的特征在于三个基本属性:对象的状态是来自其数据类型的值; 对象的身份将一个对象与另一个对象区分开; 对象的行为是数据类型操作的影响。 在Java中,引用是访问对象的机制。
4. 应用程序编程接口(API)。 为了指定抽象数据类型的行为,我们使用一个应用程序编程接口(API),它是构造函数和实例方法(操作)的列表,并对每个函数的效果进行非正式描述,如本计数器的API一样:
5. 客户。 客户端是使用数据类型的程序。
6. 实现。 实现是实现API中指定的数据类型的代码。
客户端不需要知道数据类型是如何实现的,以便能够使用它。
1. 创建对象。 每个数据类型值存储在对象中。 要创建(或实例化)单个对象,我们使用关键字new调用构造函数。 每次客户端使用new时,系统为对象分配内存空间,初始化其值,并返回对对象的引用。
2. 调用实例方法。 实例方法的目的是对数据类型值进行操作。 实例方法具有静态方法的所有属性:参数通过值传递,方法名称可以重载,它们可能具有返回值,并且它们可能导致副作用。 他们有一个额外的属性,表征他们:每个调用与一个对象相关联。
3. 使用对象。 声明给了我们可以在代码中使用的对象的变量名。 要使用给定的数据类型,我们:
* 声明类型的变量,用于引用对象
* 使用关键字new来调用创建类型对象的构造函数
* 使用对象名称来调用实例方法,作为语句或表达式
例如,Flips.java是一个Counter.java客户端,它接受命令行参数T并模拟T硬币翻转。
4. 分配语句。 具有引用类型的赋值语句创建引用的副本(并且不创建新对象)。 这种情况称为别名:两个变量都指向相同的对象。 别名是Java程序中常见的错误来源,如以下示例所示:
1 2 3 4 5 |
|
代码打印字符串“2 ones”。