React Native零碎小知识

RN命令

npm cache clean --force

react-native init AwesomeProject

cd AwesomeProject

react-native run-android

react-native start --port 9999//在新端口启动服务

React Native 框架

 

生命周期 http://www.race604.com/react-native-component-lifecycle/

 

方法名

作用

调用次数

constructor

构造函数,初始化需要的state

1次

componentWillMount

控件渲染前触发

1次

render

渲染控件的方法

多次

componentDidMount

控件渲染后触发

1次

componentWillReceiveProps

组件接收到新的props时被调用

多次

shouldComponentUpdate

当组件接收到新的props和state时被调用

多次

componentWillUpdate

props或者state改变,并且此前的shouldComponentUpdate方法返回为 true会调用该方法

多次

componentDidUpdate

组件重新渲染完成后会调用此方法

多次

componentWillUnmount

组件卸载和销毁之前被调用

1次

渲染

 

依次触发了父控件的构造函数,componentwillMount,render,子控件的构造函数,子控件的componentwillMount,render,componentwillMount,最后才是父控件的componentwillMount

可以看出,初次的渲染周期是从外向内逐步渲染,内部完成后才算整体结束。

 

动画原理

 https://blog.csdn.net/sinat_17775997/article/details/60955900

布局

position:'relative'

相对布局。这个和html的position有很大的不同,他的相对布局不是相对于父容器,而是相对于兄弟节点。

relative:生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

position:'absolute'

绝对布局。这个是相对于父容器进行据对布局。绝对布局是脱离文档流的,不过奇怪的是依旧在文档层次结构里面,这个和html的position也很大不一样。另外还有一个和html不一样的是,html中position:absolute要求父容器的position必须是absolute或者relative,如果第一层父容器position不是absolute或者relative,在html会依次向上递归查询直到找到为止,然后居于找到的父容器绝对定位。

Image——resize mode

 

JS—use strict

严格模式下你不能使用未声明的变量。

"use strict";

x = 3.14;       // 报错 (x 未定义)

在函数内部声明是局部作用域 (只在函数内使用严格模式):

x = 3.14;       // 不报错

myFunction();

function myFunction() {

   "use strict";

    y = 3.14;   // 报错 (y 未定义)

}

不允许删除变量

箭头函数,在点击事件里,没有参数可以直接onPress={this.playGame},有参数就要onPress={()=>(this.playGame(a,b))}

需要继承的方法不能写成箭头函数。

1、数据只有一份存储,即在C++中,无论是ReadableNativeArray(Java)还是WritableNativeArray(Java)都只是数据存取的管道。

2、ReadableNativeArray和WritableNativeArray在Java层和C++层又都有各自的实例,通过Java层实例的HybridData的mNativePointer作为纽带链接,其存储的是C++层实例的指针。

3、无论是Java层还是C++层的ReadableNativeArray和WritableNativeArray都是统一由Java GC进行回收管理。

本地H5跟APP联调配置

1.电脑和APP在同一网段

2.电脑本地服务的配置地址webpack.dev.js里的target和 APP里config.gradle的WEB_HOST一致(都是dev或sit)

3.修改APP里的H5 URL,栗子:http://10.202.72.12:8080/cotpweb-web/pages/app/index.html#/auth/knowledge-wrapper/22634/1

4.替换token .\html\app\src\js\utils.js getCokie()的返回值为,APP的token

5.如果需要在H5页面打断点,需要用到Chrome://inspect (如果白屏,可能需要梯子才能看到待调试的页面)

6.开启webView调试的方法,开启之后,才能在Chrome里调试,

@Override

protected void onCreate(Bundle savedInstanceState) {

//Enabling web debugging

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

if (0 != (getApplicationInfo().flags = ApplicationInfo.FLAG_DEBUGGABLE)) {

WebView.setWebContentsDebuggingEnabled(true);

}

}

super.onCreate(savedInstanceState);

}

注意:chrome浏览器,不允许读取本地服务网页的cookie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值