博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【未学习】react native整理笔记
阅读量:6205 次
发布时间:2019-06-21

本文共 3932 字,大约阅读时间需要 13 分钟。

hot3.png

中文文档

 

一,环境搭建

 

安装react native命令行

 

npm install -g react-native-cli

 

初始化项目

 

react-native init luckygoods

cd luckygoods

 

初始化过程比较久,耐心等待...

 

1,IOS

 

安装Xcode,V7.0+

 

运行项目:npm run start

双击luckygoods/ios/luckygoods.xcodeproj,在xcode打开项目,command + R 运行虚拟机

当修改JS后,在虚拟器环境再次Command +R 即可刷新

 

2,Android

 

(1)安装Android Studio

 

安装完成后,进入SDK Manager,在SDK Platforms窗口中,选择Show Package Details,然后在Android 6.0 (Marshmallow)中勾选如下选项:

  • Google APIs
  • Intel x86 Atom System Image、
  • Intel x86 Atom_64 System Image
  • Google APIs Intel x86 Atom_64 System Image
  • Android SDK Build-Tools 23.0.1

 

(2)ANDROID_HOME环境变量

 

确保ANDROID_HOME环境变量正确地指向了安装的Android SDK的路径。

编辑~/.bash_profile文件,添加:

 

export ANDROID_HOME=/Users/zhenn/android-sdks

 

立即生效:

source ~/.bash_profile

使用echo $ANDROID_HOME检查此变量是否已正确设置

 

(3)添加adb(android debugger bridge)命令

 

export PATH=/Users/zhenn/android-sdks/platform-tools:$PATH

查看$PATH

echo $PATH

显示如下信息:

/Users/zhenn/android-sdks/platform-tools:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

 

(4)运行、调试

 

USB连接手机,对于手机两点要求:

  • 务必开启USB调试
  • 不要使用小米系列手机,未知原因导致无法正常安装

 

项目目录执行react-native run-android,正常情况下将安装测试应用到手机。打开应用,即可看到react-native编写的界面。

 

在更新js文件后,摇晃手机弹出menu,选择reload,应用视图即刷新。

另外,若选中远程调试选项,则可在chrome端调试js,具体请参考chrome调试部分。

 

二,Chrome调试

 

先安装chrome插件React Developer Tools

在项目目录启动react-native服务

 

$ cd ~/react-native-project

$ npm run start

 

在xcode中cmd + R构建项目并在虚拟机中启动,通过CMD + 1/2/3/4,可调节模拟器分辨率

 

chrome浏览器新建tab,打开地址:,将看到如下界面:

 

 

此时并没有进入调试状态,在js代码中增加debugger,浏览器并不会响应。

要进入调试,需要在模拟器中开启远程调试

 

默认快捷键 control + command + z,点击未弹出菜单,请检查与其他app的快捷键是否冲突

 

 

开启远程调试后,切换到chrome浏览器,调试状态就会更新如下

 

 

接下来就跟调试web项目一样,唯一区别是在浏览器不能呈现app视图。

 

三,基本知识

 

1,响应用户事件

 

可用事件列表

- onPress,按下屏幕并松开,相当于web中click

- onLongPress,按下不松开(长按)

- onPressIn,相当于touchstart

- onPressOut,相当于touchend

 

事件绑定必须写在TouchableHighlight、TouchableOpacity、TouchableWithoutFeedback组件中方可生效,比如:

<TouchableHighlight onPress={this.pop} >

     <Image source={pic} style={styles.img} />

</TouchableHighlight>

 

TouchableHighlight 制作按钮、链接,press时背景会改变

TouchableOpacity 用户press时降低透明度,而非改变背景

TouchableWithoutFeedback 没有任何视觉反馈

TouchableNativeFeedback

 

推荐使用第三种,其他点击效果均可通过第三种实现,利用onPressIn\onPressOut事件

 

2,样式

 

基本样式

width、height、marginLeft等

border等复合属性不能直接用,需要拆分borderWidth、borderColor

 

面向元素自身

 

alignSelf属性值

- flex-start 类似于float:left

- center

- flex-end 类似于float:right

 

面向子元素

  • justifyContent 设为center可垂直居中 
  • alignItems: ‘center’ 会导致内部view不能自适应宽度,慎用

 

flex布局

 

不存在float属性,布局靠flex、alignSelf实现

position依然可用,设置为absolute时,务必设置zIndex大于1以上,否则会被普通组件遮挡

flexDirection 决定字元素排列方向,默认值为column(列),可选值为row(行)

 

图片自适应

 

通过resizeMode来适配图片布局,包括contain, cover, stretch

默认不设置模式等于cover模式

contain模式自适应宽高,给出高度值即可

cover铺满容器,但是会做截取

stretch铺满容器,拉伸

 

文本必须放到Text组件内,且Text内的样式可被继承

 

TouchableHighlight  可点击区域组件

press的样式定义方式,增加属性 underlayColor="rgba(255,0,66,.5)"

 

borderRadius 只接受number,可设置四边圆角,不能单独单个角的弧度

borderTopLeftRadius 设置单个角弧度

 

 

3,网络请求

 

let url = '';

    fetch(url, {
        method: 'GET',
        headers: {},
        // post方法可传body
        // body: JSON.stringify({
        //     firstParam: 'yourValue',
        //     secondParam: 'yourOtherValue',
        // })
    }).then((res) => {
        return res.json();
    })
    .catch((error) => {
        console.warn("fetch error:", error);
    })
    .then((res) => {
        // 可操作json
        console.log(res);
    });

 

在iOS9.x中,需要修改info.plist支持http请求,红色区域内为新增字段。

 

 

4,上拉加载数据列表

 

listview

 

针对ios无法配置多列listview问题,可通过调整数据格式实现,即多个数据项(item)合成单个数据项。

重要属性:

     - onEndReached 滚动到底部的回调 —— 第一次渲染时数据不足一屏(比如初始值空的),此事件也会触发

     - onEndReachedThreshold 触发onEndReached的阈值,距底部的距离

     - removeClippedSubviews 超出视图范围的组件是否移除,默认为true,必须配合item的overflow:hidden,否则无法生效,结果就是listview加载大数据列表时特别容易引起崩溃.

 

 

 

5,视图跳转——Navigator

 

 

6,常用三方组件

 

通讯录

react-native-contacts

 

本地持久化存储

react-native-storage

 

通用版ViewPagerAndroid   

rn-viewpager

 

7,最小兼容的分辨率

 

iOS:320,设计稿640 * X

android:360,设计稿720 * X

 

➜  luckygoods git:(master) ✗ npm install --save react-native-wechat-android

➜  luckygoods git:(master) ✗ react-native link react-native-wechat-android

rnpm-install info Linking react-native-wechat-android android dependency

rnpm-install info Android module react-native-wechat-android has been successfully linked

转载于:https://my.oschina.net/u/3047945/blog/806282

你可能感兴趣的文章
几种去除数组中重复元素的方法、数组去重
查看>>
C语言递归实现二叉树(二叉链表)的三种遍历和销毁操作(实验)
查看>>
C#的特性Attribute
查看>>
Java 编程下 Eclipse 如何设置单行代码显示的最大宽度
查看>>
【BZOJ1001】[BeiJing2006]狼抓兔子
查看>>
我的程序员之路(一) 分类: 程序人生 201...
查看>>
HTTP Methods: GET v.s POST
查看>>
onmousemove和onmouseout事件的调用,和js使用双引号、单引号的时候应该注意的问题...
查看>>
COM组件的运行机制
查看>>
sql server 2008 身份验证失败 18456
查看>>
广义表
查看>>
支持向量机SVM算法原理及应用(R)
查看>>
python 3 面向过程编程
查看>>
iPhone手机屏幕尺寸(分辨率)
查看>>
笔试题③
查看>>
css 属性选择器笔记
查看>>
PHP工厂模式计算面积与周长
查看>>
Flask学习 一 基本结构
查看>>
sqlserver2005仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'SendMealAddress'中为标识列指定显式值。...
查看>>
HDU1147:Pick-up sticks(线段相交)
查看>>