ReactNative 踩坑小计
- 使用ES6語法編寫Component時綁定事件需要用this.MethodName.bind(this),否則MethodName中無法使用this
<TouchableHighlight onPress={this.onPressButton.bind(this)}>
<Text>Test</Text>
</TouchableHighlight> - 使用ES6語法編寫方法,需要調用同類中的方法時,需要添加this前綴,否則會出現無法找到function錯誤
getSomeVar(){
return this.someVar;
}
testMethod(){
return this.getSomeVar();
} - node_gyp
有些npm安裝包需要node_gyp,此程序需要先安裝python, 且只支持2.7版本 ,3.X是不支持的,安裝時注意將安裝目錄添加至PATH選項,如未勾選請自行加上 - 運行github上面的項目example步驟:
1.進入項目example目錄運行npm install
2.運行 react-native upgrade
3.如遇到__DEV__ is not defined 錯誤,請移除.babelrc裏的"presets": ["react-native"] - ListView刷新行數據需要注意點【PressRow】:
1.新數據集需要先克隆
2.修改行數據為對象時需要采用對像方式賦值,而且不是obj.propTest='Value'
3.更新數據源採用this.setState方法pressRow(rowData, rowID){
let newArray = this.state.itemData.slice(); //數組複製
newArray[rowID] = { //對象式賦值
...this.state.itemData[rowID],
ChangeValue: 'TestValue',
};
this.setState({ //更新數據源
itemDataSource: this.state.itemDataSource.cloneWithRows(newArray),
});
}
- 當ListView的dataSource數據來源為對像數組時,刷新整個數據需要對數組重新賦值,否則不會刷新頁面:
方法1:let newArray=this.state.data.slice();
for (var i = 0; i < newArray.length; i++) {
newArray[i]={
...this.state.data[i],
};
}
this.setState({
dataSource:this.state.dataSource.cloneWithRows(newArray),
});方法2:
let newArray=JSON.parse(JSON.stringify(this.state.data));
this.setState({
dataSource:this.state.dataSource.cloneWithRows(newArray),
});
- 調試anrdoid時有時候Reload JS無效,這時候請關閉原來的JS Running窗口,執行 react-native start試試
- 導入Class時需要注意導入類是否包含defalut,default為不帶括號,非default需要帶括號,否則有可能會引起錯誤
import Games from './views/Games';
import {Login} from './views/Login'; export default class Games extends Component {
..........
} export class Login extends Component {
} - ES6类中constructor 引用静态变量不会执行 New实例的时候会执行。
- 第一个页面有獲得焦點的TextInput控件时,須在轉到第二個頁面前取消焦點,否則轉到第二个页面为Listview时绑定行必须要点两次才会触发
注:用的是react-native-router-flux 中的 Actions.pageKey()方法. - react-native-store用for删除多笔带条件数据时,需要添加async和await,否则只会删除第一笔
static async clearCart(items){
for (let item of items) {
await DB.Cart.remove({
where:{
and:[{id:item.ID}]
}
});
}
}
ReactNative 踩坑小计的更多相关文章
- Linux/Docker 中使用 System.Drawing.Common 踩坑小计
前言 在项目迁移到 .net core 上面后,我们可以使用 System.Drawing.Common 组件来操作 Image,Bitmap 类型,实现生成验证码.二维码,图片操作等功能.Syste ...
- flutter 踩坑小计: amap_base 地图缩放 zoom 设置无效的问题
这种问题估计也就我这种菜鸡能遇到了,因为我问了一些大佬,他们完全没遇到这类的问题. 如果你也遇到了,希望这篇文章能帮到你,倘若还不能解决你的问题,可以留言,我们共同研究. 问题:同样的插件,为什么偏偏 ...
- React-Native 踩坑过程
踩坑过程: 解决方法就是去 SDK Manager 把 23.0.1 的版本下载了 而如果报错信息中含有bintray.com.gradle.org等网址,请***,反复重试,或者去react nat ...
- react-native 踩坑记
最近在使用react-native的时候遇到了很多坑,这里给大家分享下 一.样式 react-native 虽然支持flex布局,但是所有的样式均是css样式的一个很小的集合,尤其是在安卓机下问题尤为 ...
- ReactNative踩坑日志——OnPress随着render()执行被自动调用?
在ReactNative中,Text.Button以及其他Touchable包装成的可点击控件,都可以通过onPress属性为其指定点击时的响应函数. 在有些情况下,我们会把这些点击函数先定义好,然后 ...
- ReactNative踩坑日志——使用async/await语法解决网络请求的异步导致的指令执行顺序错乱问题
转载请注明原文地址: ReactNative的fetch是天然的异步请求,因此,如果你在一个代码块中使用了fetch,那么在执行的时候程序不会等待网络响应结束才执行下一条代码,而是会直接按顺序执行完整 ...
- ReactNative踩坑日志——代码执行方式(面向对象)
在ReactNative中,是以面向对象的方式执行代码的.处于同一{}內的代码以对象的形式执行,也就是说,程序虽然会自上而下执行代码,但是它会保证当前整个代码块內的语句执行完毕才执行下一代码块. 举个 ...
- ReactNative踩坑日志——如何实现删除scrollview中的视图
在reactNative中,页面是根据state值的变化来重新渲染的.因此,传统的前端开发中通过 id 来移除一个页面元素的做法在这里不适用. 一般,我们是通过遍历数组或map来渲染出scrollvi ...
- React-Native踩坑记录二
1.Image组件的borderRadius画圆有平台兼容性问题,在IOS下会失效 解决方法有几种 (1)在外面包裹一层View,对View组件使用borderRadius就可以了,这是我的做法 (2 ...
随机推荐
- linux用dd测试磁盘速度
[root@localhost ~]# time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file记录了1000000+0 的读入记录了100000 ...
- C#语句及案例
今天学习了,C#语句部分的分支语句,差点转不过弯来. 语句分类: 1.顺序语句 2.选择语句(分支语句) 3.循环语句 分支语句 (一)if(){} ; 按照顺序哪个if条件适合,执行哪个. 不合适就 ...
- 简单说说PHP优化那些事
我们在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少.往往我们在追求这些的同时却失去了很多东西.下面我想讲讲我对PHP优化的理解.优化的目的是花最少的代价换来最快的运行速度与最 ...
- C#实现Comparable接口实现排序
C#中,实现排序的方法有两种,即实现Comparable或Comparer接口,下面简单介绍实现Comparable接口实现排序功能. 实现Comparable接口需要实现CompareTo(obje ...
- HDU 3949 XOR(高斯消元)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 题意:给出一个长度为n的数列A.选出A的所有子集(除空集外)进行抑或得到2^n-1个数字,去重排 ...
- string.length()与-1比较为什么会出现匪夷所思的结果
今天调试程序发现了个匪夷所思的事情,-1与string.length()比较永远是-1大,看下面代码 #include<iostream> #include<string> u ...
- mysql_create_frm
http://www.cnblogs.com/jiangxu67/p/4755097.html http://www.cnblogs.com/jiangxu67/p/4755097.html http ...
- ASP.NET MVC 学习2、从Controller传递数据到View
参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view 一,Control ...
- LeetCode Single Number II 单元素2
题意:给一个序列,其中只有1个元素只出现1次,其他的都一定出现3次.问这个出现一次的元素是多少? 思路: (1)全部元素拆成二进制,那么每个位上的1的个数应该是3的倍数,如果不是3的倍数,则ans的这 ...
- Oracle 一次 锁表 处理小记
同事说测试库上的一张表被锁了. 不能执行DML 操作. 锁表的准确说法应该是阻塞.之前的一遍blog里有说明: 锁 死锁 阻塞Latch 等待 详解 http://blog.csdn.net/tian ...