React Native中的元件和佈局是開發應用程式的重要部分。今天就先來介紹其中一部分-元件。
元件(Components)
React Native中的元件是用來建構UI界面的基本單位。它們分為兩種類型:
HTML元素和Native元件的對照
在開發網頁時,通常會用到很多基本的HTML元素,這些元件包括<div>、<spa>以及<img>,以及用來組織的元素如<ol>、<ul>及<table>。
在使用React native 的時候,我們不在使用HTML元素,但改用類似的多樣元件取代
| React | React Native |
|---|---|
| div | <View> |
| img | <Image> |
| Span,p | <Text> |
| Ul/ol, li | <FlatList>, child items |
<Text>元件
Text元件用於顯示文字內容。render文字看似是最基本的功能,幾乎任何的應用程式都會需要再某處render文字。但是用React Native開發行動裝置以及網上用的render文字是不一樣的。
在React Native中,只有<Text>元件可以有純文字的子項,所以不可以這樣用:
Text doesn’t go here!
</View>
應該要用<Text>包裝過。
<Text>This is OK!</Text>
</View>
在React Native中使用<Text>元件時,你不需要再存取<strong>和<em>等類似的子標簽,而是既有設定fontWeight及fontStyle來套用樣式,以達成差不多的效果。
以下為一個小範例(建立可重用的文字樣式元件)
const styles = StyleSheet.create({
bold: {
fontWeight: 'bold',
},
italic: {
fontStyle: 'italic',
},
});
class Strong extends Component {
render() {
return (
<Text style={styles.bold}>
{this.props.children}
</Text>
);
}
}
class Em extends Component {
render() {
return (
<Text style={styles.italic}>
{this.props.children}
</Text>
);
}
}
<Image>元件
當為網頁撰寫HTML和CSS時,我們會用多種方法引用影像:有時用<img>標籤,有時使用CSS取得影像,例如使用background-image屬性。在React Native中,也有類似的<Image>元件,只是行為有稍微的差異。
<Image>元件基本的用法很直接:只要設定好source屬性就好
<Image source={require(“./puppies.png”)} />
{/*Your content here...*/}
</Image>
由於React Native著重在使用元件,所以影像也要被<Image>元件引用。舉例來說,在純HTML和CSS會使用background-image屬性來指定背景,而在React Native 就要改用<Image>元件當作容器,例如:
<Image source={require(“./poppies.png”)}>
{/* Your content here…*/}
</Image>
今天將介紹剩下一部分常見的元件,以及一部分的佈局。
<TextInput>元件
Text 是React Native中屬於處理文字輸入的基本UI元件。它允許用戶在應用程式中輸入文字,例如用戶名、密碼、搜索關鍵字等。
以下為為常見的語法<onChangeText> 接受使用者每次輸入的字元<onSubmitEditing>當virtual keyboard 的returnKey觸發時<returnKeyType>設定returnKey在virtual keyboard上的長相<value>TextInput當前在輸入框線上的字串<blurOnSubmit>是否要讓元件在submit後失去焦點
<Button>元件
Button 元件是一個簡單的跨平台按鈕。這個組件的樣式是固定的,如果早在外觀上搭配應用程式的設計的話,可以使用TouchableOpacity或是TouchableNativeFeedback組件來設計自己的按鈕。
Import {Button} from ‘react-native’
<Button
OnPress={onPressLearnMore}
Title=“Learn More”
Color=“#841584”
AccessibilityLabel=“Learn moreabout this purple button”
/>
參考資料:React Native學習手冊——Bonnie Eisenman著\張靜雯 譯
React Native中文網——https://reactnative.cn/docs/button