[React Native] 02-4 ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ ์์ฑ ์ดํดํ๊ธฐ
๋ฒํผ์ ๋๋ฅด๋ฉด ๋ํ์์๊ฐ ๋ํ๋๋ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
๋ฒํผ ์ปดํฌ๋ํธ
import react from 'react';
import {SafeAreaView, Alert, Button} from 'react-native';
export default function App() {
return (
<SafeAreaView>
<Button
title="Home"
onPress={() => Alert.alert('home pressed.', 'message')}
/>
</SafeAreaView>
);
}
- Button ์ฝ์ด ์ปดํฌ๋ํธ๋ onPress ์์ฑ์ ์ ๊ณตํ๋ค. โก๏ธ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ง์ ํด์ผ ํจ.
- <Button onPress = {์ฝ๋ฐฑ_ํจ์}>
- ์ฝ๋ฐฑ ํจ์์ ํํ : () => {/* ํจ์ ๋ชธํต */}
- <Button onPress = {์ฝ๋ฐฑ_ํจ์}>
- ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ Alert API (Application Programming Interface) ๋ฅผ ์ ๊ณตํ๋ค.
- Alert API ๊ฐ ์ ๊ณตํ๋ alert ์ ์ ๋ฉ์๋ : static alert(ํ์ดํ, ๋ฉ์์ง)
- ์์ ์ฝ๋์์ onPress={() => Alert.alert('home pressed.', 'message')} ๋ ์๋ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋ํ๋๋ค.
ํฐ์ฒ๋ธ ์ฝ์ด ์ปดํฌ๋ํธ
- Button ์ ๋์์ธ์ ์ตํต์ฑ์ด ์๋ค๋ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ํฐ์ฒ๋ธ ์ฝ์ด ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํน์ง
1) ์ปดํฌ๋ํธ ์์ด์ ํฐ์น๊ฐ ์ผ์ด๋๋ฉด onPress ์ด๋ฒคํธ ์์ฑ์ ์ค์ ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ๋ค.
2) ๋จ ํ ๊ฐ์ ์์ ์ปดํฌ๋ํธ๋ง ์ฌ ์ ์๋ค.
TouchableOpacity ๋ฅผ ์ฌ์ฉํ์ฌ Text ์ปดํฌ๋ํธ๋ฅผ Button ์ฒ๋ผ ๋์ํ๊ฒ ํ๋ ์
import react from 'react';
import {SafeAreaView, Alert, Button} from 'react-native';
import {TouchableOpacity, TouchableHighlight, Text} from 'react-native';
const onPress = () => Alert.alert('home pressed.', 'message');
export default function App() {
return (
<SafeAreaView>
<Button title="home" onPress={onPress} />
<TouchableOpacity onPress={onPress}>
<Text>TouchableOpacity</Text>
</TouchableOpacity>
<TouchableHighlight onPress={onPress}>
<Text>TouchableHighlight</Text>
</TouchableHighlight>
</SafeAreaView>
);
}
โ Text ์ปดํฌ๋ํธ๋ onPress ์์ฑ์ ์ด์ฉํด์ ๋ฒํผ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค. โก๏ธ Button ๊ณผ ํฐ์ฒ๋ธ ์ปดํฌ๋ํธ์ ๋ฌ๋ฆฌ ํฐ์นํ์ ๋ ์๊ฐ ํจ๊ณผ๊ฐ ์ ํ ์์.
ex) <Text onpress={onPress}>Press Me</Text>
TextInput ์ฝ์ด ์ปดํฌ๋ํธ
import {TextInput} from 'react-native'
- ํ ์คํธ๋ฅผ ์ ๋ ฅํ๊ณ ์ ํ ๋ TextInput ์ฝ์ด ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ค.
ํน์ง
1) ์์ ์์๋ฅผ ๊ฐ์ง์ง ๋ชปํ๋ค.
2) ํฌ์ปค์ค๋ฅผ ๊ฐ์ง๊ฒ ํ๋ focus ๋ฉ์๋์ ํฌ์ปค์ค๋ฅผ ์๊ฒ ํ๋ blur ๋ฉ์๋๊ฐ ์๋ค.
3) ํ ์คํธ๊ฐ ์ ๋ ฅ๋ ๋ onChangeText ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์คํํ๋ค.
4) ํ ์คํธ ์ ๋ ฅ์ด ๋ชจ๋ ๋๋๋ฉด onEndEditing ์ด๋ฒคํธ๋ฅผ ํธ์ถํ๋ค.
โ onFocus, onBlur, onEndEditing ์๋ ์๋ฌด๋ฐ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ค์ ํ๋ค.
Text์ TextInput ์ ์ถ๊ฐํ App.tsx
import react from 'react';
import {SafeAreaView, Alert, Button, TextInput} from 'react-native';
import {TouchableOpacity, TouchableHighlight, Text} from 'react-native';
const onPress = () => Alert.alert('home pressed.', 'message');
export default function App() {
return (
<SafeAreaView>
<Button title="home" onPress={onPress} />
<TouchableOpacity onPress={onPress}>
<Text>TouchableOpacity</Text>
</TouchableOpacity>
<TouchableHighlight onPress={onPress}>
<Text>TouchableHighlight</Text>
</TouchableHighlight>
<TextInput
placeholder="enter your name"
onChangeText={(text: string) => console.log(text)}
onFocus={() => console.log('onFocus')}
onBlur={() => console.log('onBlur')}
onEndEditing={() => console.log('onEndEditing')}
/>
</SafeAreaView>
);
}