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-入门基础的更多相关文章

  1. React Native 入门基础知识总结

    中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...

  2. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  3. 01shell入门基础

    01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...

  4. Markdown入门基础

    // Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...

  5. JavaScript入门基础

    JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...

  6. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  7. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  8. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  9. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

  10. AngularJS入门基础PPT(附下载链接)

    学习了Angularjs有段时间,自己写了一个PPT,个人认为总结的非常全面,对于入门基础够了. 大致模块有:Angularjs简单介绍,Angularjs特性,hello world,Control ...

随机推荐

  1. sync.Pool的使用

    一定要搞明白sync.Pool的正确用法,避免出现以下问题: kline := this.pool.Get() defer this.pool.Put(kline) kline.UnMarshal(d ...

  2. 新式类单例模式之 __new__()

    单例模式: 确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 类中有一个静态属性__instance,默认为none,重构__new__()方法,判断__instance是否为空,若为 ...

  3. Python全栈之路----常用模块----subprocess模块

    我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python ...

  4. 关于Object.keys()和for in的区别

    今天见到一道面试题让说一说Object.keys()和for in的区别,顿时有些发懵“What's Object.keys?”我立马上网搜了一下,大致作用也是做遍历,参数是一个对象,返回值是一个数组 ...

  5. ST&倍增LCA

    回顾st算法,它的一大功能是求区间最值.先将整个区间划分成若干个小的区间,求出最值,然后将小的区间合并成一个大的区间,我们这里要用到一个数组minn[i][j],划重点!如果我们要求的是区间最小值,m ...

  6. sqlserver 表操作 SQL篇

    数据库知识点 1.数据库操作: 增:insert into 表名 values(值1,值2,值3) 删:delete 列名 from 表名 where 条件 改:update 表名 set =值 wh ...

  7. Java 动态绑定

    转载  http://www.cnblogs.com/ygj0930/p/6554103.html 一:绑定 把一个方法与其所在的类/对象 关联起来叫做方法的绑定.绑定分为静态绑定(前期绑定)和动态绑 ...

  8. mq的基本介绍和基本用法

    1.什么是MQ,有什么用? MQ 是message queue ,消息队列,也叫消息中间件,遵守JMS(java message service)规范的一种软件.(同时还有另一个叫AMQP的应用层协议 ...

  9. .NET MVC 表主外键关系 JSON 无限循环 方案二(推荐)

    public class JsonResultObject:JsonResult { private Newtonsoft.Json.JsonSerializerSettings Settings { ...

  10. C# 特性(Attribute)之Serializable特性

    转载自:https://www.cnblogs.com/GreenLeaves/p/6753261.html 介绍之前,先说一个重要的知识点: Serializable属性并不序列化类,它只是一个标签 ...