组件类型
View: 容器组件
Text: 文本组件
TouchableWithoutFeedback: 点击组件,默认不做点击响应,还有其他类型组件,比如TouchableHighlight FlatList: 列表组件
TextInput: 输入框组件,支持多行
ScrollView: 滚动区域组件
常用的大概就这些,对于组件,会有不同的用法,比如文字只能放在Text里使用,数组数据只有传到FlatList里才能正常使用,点击事件只有在Touch开头的容器里才会生效。引入方式,比如:import { Text, View } from 'react-native';
具体可以直接上官网:reactnative.cn/
触发事件
也是特定的组件才能触发的,比如onChangeText,规定只有TextInput组件触发
onPress:触摸
onLongPress: 长按
onSubmitEditing: 会在文本被提交后(用户按下软键盘上的提交键)调用
原生外援
如果你需要针对应用的某一部分特别优化,中途换用原生代码编写也很容易。 想要应用的一部分用原生,一部分用React Native也完全没问题 —— Facebook的应用就是这么做的。
import React, { Component } from 'react';
import { Text, View } from 'react-native';
import { TheGreatestComponentInTheWorld } from './your-native-code';
class SomethingFast extends Component {
render() {
return (
<View>
<TheGreatestComponentInTheWorld />
<Text>上面这个TheGreatestComponentInTheWorld组件完全可以使用原生Objective-C、Java或是Swift来编写 - 开发流程并无二致。
</Text>
</View>
);
}
}
复制代码
网络请求
Fetch 方法会返回一个Promise,这种模式可以简化异步风格的代码,需要注意的是,安全机制与网页环境有所不同:在应用中你可以访问任何网站,没有跨域的限制。
fetch('https://mywebsite.com/endpoint/', {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
firstParam: 'yourValue',
secondParam: 'yourOtherValue',
}),
});
复制代码
fetch api
var request = new XMLHttpRequest();
request.onreadystatechange = (e) => {
if (request.readyState !== 4) {
return;
}
if (request.status === 200) {
console.log('success', request.responseText);
} else {
console.warn('error');
}
};
request.open('GET', 'https://mywebsite.com/endpoint/');
request.send();
复制代码
request send
Props和State
React 把组件看成是一个状态机(State Machines)。通过与用户的交互,实现不同状态,然后渲染 UI,让用户界面和数据保持一致。 React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。
Fixed 尺寸 & Flex 尺寸
export default class FlexDimensionsBasics extends Component {
render() {
return (
// Try removing the `flex: 1` on the parent View.
// The parent will not have dimensions, so the children can't expand.
// What if you add `height: 300` instead of `flex: 1`?
<View style={{flex: 1}}>
<View style={{flex: 1, backgroundColor: 'powderblue'}} />
<View style={{flex: 2, backgroundColor: 'skyblue'}} />
<View style={{flex: 3, backgroundColor: 'steelblue'}} />
</View>
);
}
}
复制代码