前言
堅(jiān)守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都成都辦公空間設(shè)計(jì)小微創(chuàng)業(yè)公司專業(yè)提供成都企業(yè)網(wǎng)站建設(shè)營銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。
本文為大家介紹一下React-Native中一些常用的組件,由于對(duì)ES6的語法并沒有完全掌握,這里暫時(shí)用ES5和ES6混用的語法。
View組件
View是一個(gè)支持Flexbox布局、樣式、一些觸摸處理、和一些無障礙功能的容器,并且它可以放到其它的視圖里,也可以有任意多個(gè)任意類型的子視圖。
View的設(shè)計(jì)初衷是和StyleSheet搭配使用,這樣可以使代碼更清晰并且獲得更高的性能。盡管內(nèi)聯(lián)樣式也同樣可以使用。
View的常用樣式設(shè)置
以手機(jī)端攜程官網(wǎng)為示例
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; var ViewTest = React.createClass({ render () { return () } }); var styles = StyleSheet.create({ container: { margin: 10, marginTop: 25, height: 75, flexDirection: "row", backgroundColor: "#ff607c", borderRadius: 5 }, flex: { flex: 1 }, white: { color: "white", fontWeight: "900", textShadowColor: "#ccc", textShadowOffset: {width: 1, height: 1} }, center: { justifyContent: "center", alignItems: "center" }, leftRightLine: { borderLeftWidth: 1, borderRightWidth: 1, borderColor: "white" }, bottomLine: { borderBottomWidth: 1, borderColor: "white" } }); AppRegistry.registerComponent('HelloReact', () => ViewTest); 酒店 海外酒店 特價(jià)酒店 團(tuán)購 民宿•客棧
最后效果:
Text組件
一個(gè)用于顯示文本的React組件,并且它也支持嵌套、樣式,以及觸摸處理。
常用特性
常用樣式設(shè)置
以手機(jī)端網(wǎng)易新聞為示例
創(chuàng)建header.js和news.js兩個(gè)文件
header.js具體代碼如下:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; var Header = React.createClass({ render () { return () } }); var styles = StyleSheet.create({ container: { marginTop: 25, height: 44, alignItems: "center", justifyContent: "center", borderBottomWidth: 1, borderColor: "red" }, font: { fontSize: 25, fontWeight: "bold" }, red: { color: "red" }, white: { color: "white", backgroundColor: "red" } }); module.exports = Header; 網(wǎng)易 新聞 有態(tài)度
news.js具體代碼如下:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; var News = React.createClass({ render () { var content = this.props.content; var newList = []; for (var i in content) { var text ={content[i]} ; newList.push(text); } return () } }); var styles = StyleSheet.create({ container: { margin: 10 }, title: { color: "red", fontSize: 18, fontWeight: "bold" }, font: { fontSize: 14, lineHeight: 35, fontWeight: "normal" } }); module.exports = News; 今日要聞 {newList}
最后在index.ios.js文件中修改代碼為:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; var content = [ '1、新華社用"罕見"為里皮點(diǎn)贊:他是國足的不二選擇', '2、干部動(dòng)員拆遷遭襲身亡 是否同意拆除雙方說法不', '3、母親欠債遭11人凌辱 兒子目睹后刺死1人被判無期', '4、美媒:美轟炸機(jī)進(jìn)入中國東海防空識(shí)別區(qū)遭中方警告' ]; var Header = require("./header"); var News = require("./news"); var NewsNote = React.createClass({ render () { return () } }); AppRegistry.registerComponent('WorkA', () => NewsNote);
最后效果:
Touchable類組件
該組件用于封裝視圖,使其可以正確響應(yīng)觸摸操作
常用樣式設(shè)置
示例
創(chuàng)建一個(gè)touchable.js的文件
里面代碼為:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, TouchableOpacity, TouchableHighlight, TouchableWithoutFeedback } from 'react-native'; var Touchable = React.createClass({ getInitialState () { return {times: 0} }, handlePress () { var sum = this.state.times; sum++; this.setState({times: sum}); }, render () { return () } }); var styles = StyleSheet.create({ btn: { marginTop: 25, marginLeft: 20, width: 150, height: 30, backgroundColor: "cyan", borderRadius: 3, justifyContent: "center", alignItems: "center" }, text: { fontSize: 14, fontWeight: "bold", color: "blue" }, text2: { marginLeft: 25, marginTop: 25, fontSize: 16 } }); module.exports = Touchable; TouchableOpacity TouchableHighlight TouchableWithoutFeedback 點(diǎn)了{(lán)this.state.times}次
在index.ios.js文件中代碼更改為:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; var Touchable = require("./touchable"); var TouchableTest = React.createClass({ render () { return () } }); AppRegistry.registerComponent('useComponent', () => TouchableTest);
最后效果:
圖片轉(zhuǎn)換成gif圖可能會(huì)失去一些效果,點(diǎn)擊TouchableOpacity按鈕會(huì)變透明,點(diǎn)擊TouchableHighlight按鈕的背景顏色會(huì)改變,點(diǎn)擊TouchableWithoutFeedback按鈕沒有任何變化
TextInput組件
TextInput是一個(gè)允許用戶在應(yīng)用中通過鍵盤輸入文本的基本組件。本組件的屬性提供了多種特性的配置,譬如自動(dòng)完成、自動(dòng)大小寫、占位文字,以及多種不同的鍵盤類型(如純數(shù)字鍵盤)等等。
常用屬性
示例
創(chuàng)建一個(gè)input.js的文件
里面代碼為:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, TextInput } from 'react-native'; var Input = React.createClass({ getInitialState () { return {text: ""} }, changeText (text) { this.setState({text: text}); }, render () { return () } }); var styles = StyleSheet.create({ container: { marginTop: 25 }, input: { margin: 25, height: 35, borderWidth: 1, borderColor: "red" }, text: { marginLeft: 35, marginTop: 10, fontSize: 16 } }); module.exports = Input; {this.state.text}
在index.ios.js文件中代碼更改為:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; var Input = require("./input"); var InputTest = React.createClass({ render () { return () } }); AppRegistry.registerComponent('useComponent', () => InputTest);
最后效果:
Image組件
一個(gè)用于顯示多種不同類型圖片的React組件,包括網(wǎng)絡(luò)圖片、靜態(tài)資源、臨時(shí)的本地圖片、以及本地磁盤上的圖片(如相冊(cè))等。
靜態(tài)圖片加載
直接引入,代碼如下:
網(wǎng)絡(luò)圖片加載
注意:網(wǎng)絡(luò)圖片請(qǐng)求http請(qǐng)求的xcode需要做一個(gè)設(shè)置info.plist里的Allow Arbitrary Loads后面的no改成yes。
通過source指定圖片地址,代碼如下:
示例
創(chuàng)建一個(gè)image.js的文件,在保存一張圖片至本地,這里為1.png
里面代碼為:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, Image } from 'react-native'; var ImageTest = React.createClass({ render () { return () } }); var styles = StyleSheet.create({ container: { margin: 10, marginTop: 25, alignItems: "center" }, common: { width: 280, height: 250, backgroundColor: "cyan", justifyContent: "center", alignItems: "center", marginBottom: 10 }, netImg: { width: 280, height: 220 }, localImg: { width: 200, height: 200 } }); module.exports = ImageTest;
在index.ios.js文件中代碼更改為:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; var ImageComponent = require("./image"); var ImageTest = React.createClass({ render () { return () } }); AppRegistry.registerComponent('useComponent', () => ImageTest);
最后效果:
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。