RN-入门基础
Props
State
一切界面变化,都是state变化
state修改必须通过setState方法
this.state.like=true 这样复制无效
setState是一个merge合并的操作,只修改指定属性,不影响其他属性
setState是异步操作
样式
通过StyleSheet.create来管理样式
<Text style={styles.bigBlue}>just bigBlue</Text>
<Text style={[styles.bigBlue, styles.red]}>bigBlue, then red</Text> const styles = StyleSheet.create({
bigBlue: {
color: 'blue',
fontWeight: 'bold',
fontSize: ,
},
red: {
color: 'red',
},
});
高度和宽度
在RN中尺寸是无单位的
<View style={{width: , height: , backgroundColor: 'powderblue'}} />
Flexbox布局
flex:1
flexDirection, justifyContent, alignItems 这三个属性可以满足大部分布局
但是RN中flexDirection的默认属性时column
文本
TextInput允许用户输入文本
onChangeText属性时文本放生变化被调用
<TextInput
style={{height: }}
placeholder="Type here to translate!"
onChangeText={(text) => this.setState({text})}
/>
触摸事件
Button是一个跨平台按钮
点击按钮会调用onPress
Touchable系列组件
TouchableHighlight, TouchableOpacity, TouchableNativeFeedback, TouchableWithoutFeedback
滚动试图
ScrollView,会渲染所有组件,只适合数量不多的滚动元素
<ScrollView>...</ScrollView>
长列表
FlatList
两个重要属性 data/renderItem/keyExtractor
<FlatList
data={movies}
keyExtractor={item => item.id}
renderItem = {this.renderMovies}
/>
renderMovies({item}) {
return (
<View style={styles.container}>
<Image source={{uri: item.posters.thumbnail}} />
<View>
<Text>{item.title}</Text>
<Text>{item.year}</Text>
</View>
</View>
)
}
SectionList
<SectionList
sections={[
{title: 'D', data: ['Devin']},
{title: 'J', data: ['Jackson', 'James', 'Jillian', 'Jimmy', 'Joel', 'John', 'Julie']},
]}
renderItem={({item}) => <Text style={styles.item}>{item}</Text>}
renderSectionHeader={({section}) => <Text style={styles.sectionHeader}>{section.title}</Text>}
keyExtractor={(item, index) => index}
/>
fetch
RN自带网络请求
fetch('https://mywebsite.com/endpoint/', {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
firstParam: 'yourValue',
secondParam: 'yourOtherValue',
}),
});
封装成Promise
getRequest(url, method = 'GET'){
return new Promise((resolve, reject) => {
return fetch(url, {
method
})
.then(res => res.json())
.then(resJson => resolve(resJson))
.catch(err => reject(err))
})
}
当然可以使用第三方axios
RN组件
RN内置组件
View/Text/Image/TextInput/ScrollView/StyleSheet
交互控件
Button/Picker/Slider/Switch
列表组件
FlatList/SectionList
特定平台代码
可以使用Platform模块
case1 样式
const styles = StyleSheet.create({
height: Platform.OS === "ios" ? :
});
case2 样式
const styles = StyleSheet.create({
container: {
flex: ,
...Platform.select({
ios: {
backgroundColor: "red"
},
android: {
backgroundColor: "blue"
}
})
}
});
case3 组件
const Component = Platform.select({
ios: () => require("ComponentIOS"),
android: () => require("ComponentAndroid")
})(); <Component />;
特点平台扩展名
项目中创建
BigButton.ios.js
BigButton.android.js
去掉平台扩展名
import BigButton from './BigButton';
检测Android版本
if (Platform.Version === ) {
console.log("Running on Nougat!");
}
检测iOS版本
const majorVersionIOS = parseInt(Platform.Version, );
if (majorVersionIOS <= ) {
console.log("Work around a change in behavior");
}
获取屏幕分辨率
Dimensions.get('window').width
RN-入门基础的更多相关文章
- React Native 入门基础知识总结
中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
- 01shell入门基础
01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...
- Markdown入门基础
// Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...
- JavaScript入门基础
JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...
- C++ STL编程轻松入门基础
C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...
- HTML入门基础教程相关知识
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
- AngularJS入门基础PPT(附下载链接)
学习了Angularjs有段时间,自己写了一个PPT,个人认为总结的非常全面,对于入门基础够了. 大致模块有:Angularjs简单介绍,Angularjs特性,hello world,Control ...
随机推荐
- Tomcat中的Connector配置
所有的Connector提供的配置项(不完全版scheme, isSecure, xpoweredBy, useIPVHosts ): allowTrace 如果需要服务器能够处理用户的HAED/TR ...
- Mysql安装本地数据库
1.下载解压:https://dev.mysql.com/downloads/mysql/ 2.配置环境变量path: D:\workPrograms\mysql-8.0.16-winx64\bin ...
- 关于nginx安装、iptables设置和查看端口指令netstat/ss
实验1: Nginx介绍 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP ...
- 使用JBolt新建Maven版工程步骤
一.打开新建对话框 在左侧右键new中可以找到JFinal创建工程的菜单 JBoltHome页面也有快捷按钮用来弹出创建工程对话框. 二.填写Maven和其他信息配置 填写工程name 主包名 下面有 ...
- 二.Flask 学习模板
Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于模板渲染? 简单来说,就是将 ...
- Linux第二节课学习笔记
虚拟机不一定要安装12版本,但仅有12版本支持RHCE模拟考试环境,激活码可以百度. 在创建新的虚拟机过程中,安装客户机操作系统时需要选择稍后安装操作系统,否则会默认最小化安装导致后面课上很多命令不能 ...
- javascript 创建节点和新增节点
createElement(tabName) 创建一个为tagName的新元素节点 ANode.appendChild(BNode)把B节点追加至A节点的末尾 insertBefore(ANode,B ...
- slb
第一章 弹性负载均衡slb概要介绍 第一讲什么是弹性负载均衡slb 互联网应用的服务扩展 负载均衡诞生 slb的引出 slb产品介绍 负载均衡 server load balancer 是对多台云 ...
- day-08文件的操作
三种字符串 1.普通字符串:u‘以字符作为输出单位’ print(u'abc') # 用于显示 2.二进制字符串:b‘二进制字符串以字节作为输出单位’ print(b'abc') # 用于传输 3.原 ...
- stolon cloud native postgresql 高可用方案
stolon方案与patroni 类似,是一个新的pg ha 方案 包含的组件 keeper:它管理一个PostgreSQL实例,汇聚到由领导者sentinel计算的clusterview. sent ...