1. ๊ฐ๋ ์ ๋ฆฌ
(1)Hooks๋?
๋ณธ๋ ํจ์ํ ์ปดํฌ๋ํธ์์๋ ๋ถ๊ฐ๋ฅ ํ๋, ์ํ๊ด๋ฆฌ๋ ์ฃผ๊ธฐ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ
(2)useState๋?
Hooks์ ํ ์ข ๋ฅ๋ก์
ํจ์ํ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ํด์ค๋ค.
a. ํํ
// import๋ก ์ฅ์ฐฉ ํ์
import {useState} from "react";
// ์ฌ์ฉ
const [value,setValue] = useState(์ด๊ธฐ๊ฐ)
b. ํน์ง
-useState()๋ ๋ฐฐ์ด๋ก์ ์ฒซ ๋ฒ์งธ ์์์๋ value๋ฅผ ๋ ๋ฒ์งธ ์์์๋ value๋ฅผ ๋ฐ๊ฟ ์ ์๋ ํจ์ setValue๊ฐ ๋ค์ด์๋ค.
-useState()๋ Boolean, String, number ํ ๋ณ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- View ์์์ setValue ์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
ใฑ.setValue()์ ()์์ ๋ฐ๊ฟ์ค ๊ฐ์ ๋ฃ์ผ๋ฉด value๊ฐ ํด๋น ๊ฐ์ผ๋ก ๋ฐ๋๋ค.
ใด. ๋ง์ฝ OnChange ํ์ ๋ค ์์ setValue๋ฅผ ์ธ ๊ฒฝ์ฐ!
OnChangeText = {(v)=> {setValue(v)}}
onChangeText = {setValue}
// ๋์ ๊ฐ์ ๋ง์ด๋ค.
// onChangeText์์ ๋ฐ์ v ๊ฐ์ setValue๊ฐ ์๋์ผ๋ก ์ธ์๋ก ๋ฐ๋๋ค.
2๋ฒ์งธ ํํ๊ณผ ๊ฐ์ด ๊ฐ๊ฒฐํ๊ฒ ์ธ ์ ์์์ ๊ธฐ์ตํด๋์!
์ด์ ๋ setValue ์์ฒด๊ฐ " (v) => ์์ ์ ๊ธฐ๋ฅ" ์ ํํ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
(3) ๊ตฌ์กฐ ๋ถํด ๋ฌธ๋ฒ
//๊ตฌ์กฐ ๋ถํด ๋ฌธ๋ฒ
//arr ๋ผ๋ ๋ณ์์ ๋ฐฐ์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ณด๊ฒ ์.
const arr = [1,2,3]
// arr์ ์์์ ์ ๊ทผ
const first = arr[0]
const second = arr[1]
const third = arr[2]
// ์ ์ ๊ทผ์ ํ ๋ฌธ์ฅ์ผ๋ก ์ค์ผ ์ ์์ (๊ตฌ์กฐ ๋ถํด ๋ฌธ๋ฒ)
const [first,second,third] = arr
// ์ด๊ฑด first, second, third ๊ฐ๊ฐ์ ๋ณ์๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ผ๋ก ์์ ๋๊ฐ์ ์ฝ๋๋ค.
// ์ผ์ผํ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ตฌ์กฐ ๋ถํด ๋ฌธ๋ฒ ๋ ๋ค ์ฐ๋ฉด ์๋ฌ
(4) import, export์ ์๋ฆฌ
react์์ ํ๋์ ๋ชจ๋์์ ๋ชจ๋ ์ฝ๋๋ฅผ ๋ค ์ ์ ์ ์๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ฅผ ๊ธฐ๋ฅ๋ณ๋ก ํ์ผ์ ๋๋์ด ์ ์ด๋๊ณ ,
ํ์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ชจ๋์ ์์ ํด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ฑํํ๋ค. (๋ชจ๋์ด๋ ํ๋์ ๊ธฐ๋ฅ์ ํ๋ JS ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ค.)
a. import
ํ์ํ ๋ชจ๋์ ์์ ํด์ค๋ Keyword์ด๋ค.
import {๊ฐ์ ธ์ฌ ๋ชจ๋์ ์ด๋ฆ} from "๊ฒฝ๋ก"
b. export
์ด๋ค ๋ชจ๋์ ๋ค ๋ง๋ ํ์ ๊ทธ ๋ชจ๋์ ๋ค๋ฅธ ๊ณณ์์๋ ์ฌ์ฉํ ์ ์๋๋ก ๋ด๋ณด๋ด๋ Keyword์ด๋ค.
// 1. ์ฝ๋ ๋ค ์ด ํ ๋งจ ๋ง์ง๋ง์ ์ ๋ ๋ฐฉ๋ฒ
export{์ต์คํฌํธํ ํจ์๋ ํด๋์ค ์ด๋ฆ};
// 2. export ํ ํจ์, ๋ณ์, ํด๋์ค ์ ๋๊ฐ๋ฆฌ์ ์ ๋ ๋ฐฉ๋ฒ
export default function App(){
//...
}
// ์ด๋ฌ๋ฉด ํด๋น App์ด๋ ํจ์๊ฐ export ๋จ.
// 3. default๋ผ๋ ํค์๋๋ ๊ฐ์ด ์ฐ๊ธฐ. ํด๋น ๊ฒฝ์ฐ {}๋ฅผ ๋ ์ด์ ์ฐ์ง ์์๋ ๋๋ค.
export default ํจ์,ํด๋์ค์ด๋ฆ;
// 4. ์ง๊ธ exportํ๋ ค๋ ํจ์๋ ๋ณ์ ํด๋์ค์ as๋ฅผ ํตํด ๋ณ์นญ์ ๋ถ์ผ ์ ๋ ์๋ค.
export { page404 as ErrorPage };
(5) ๊ธฐํ ์์ฑ๋ค
a. Switch ํ๊ทธ์์ onValueChange = {v => {}} ๋ v๋ผ๋ ์ธ์์, Switch๊ฐ On ๋ ๋๋ true ๋ฃ๊ณ , ์๋ ๋๋ false๋ฅผ ๋ฃ์ด {}์ ๋์์ด ์คํ๋๊ฒ ํ๋ค.
onChange~~ = {(v) => {}}
- onChange ํ์ ๋ค์ ๋ชจ๋ v ์์ ์ฌ์ฉ์๊ฐ ์ด๋ค ํ์๋ฅผ ํด์ ๋ฐ๋ ๊ฐ๋ค์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
b. Button ํ๊ทธ์์ OnPress {() => {}}๋ ๋๋ ์ ๋ ์์ ๋๋ค์์ด ์คํ๋๊ฒ ํ๋ค.
2. ์ฝ๋ ๋ฆฌ๋ทฐ
export default function App() {
return (
<View style={styles.container}>
// ํด๋น ์ปดํฌ๋ํธ๋ฅผ ์์
ํด์ ์ฌ์ฉ
<StateWithFuctionalComponent/>
</View>
);
}
import React, { useState } from "react";
import { View, Text, Button, Switch, TextInput } from "react-native";
const Component = () => {
const [count, setCount] = useState(0); // number
const [isOn, setIsOn] = useState(false);
const [name, setName] = useState("");
return (
<View>
<Text>You clicked {count} times</Text>
<Button title="Click me" onPress={() => setCount(count + 1)} />
{/*onPress ๋ ๋๋ฅผ ๋ ๋์ํ๋ ์น๊ตฌ */}
<Text>--------</Text>
<Switch
value={isOn}
//์ค์์น ๊ฐ์ด ๋ฐ๋์์ ๋๋ฅผ ์ธ์ํ๋ ๋ณ์
onValueChange = {v => {
console.log('v',v);
setIsOn(v);
}}
/>
<Text>--------</Text>
{/*name์ด๋ ๋ณ์ ์์ ๊ฐ์ ๋ฐ์์ผ ํ๋๊น {} ํ
ํ๋ฆฟ ์ฌ์ฉ*/}
<TextInput
value={name}
onChangeText={v => {
console.log('v',v);
setName(v);
}}
style={{backgroundColor: 'pink'}}
/>
</View>
);
};
export default Component;
3. ์ค์ค๋ก ํด๋ณด๊ธฐ
import React, { useState } from "react";
import { View, Text, Button, Switch, TextInput } from "react-native";
const Component = () => {
const [count,setCount] = useState(0);
const [isOn, setIsOn] = useState(false);
const [value, setValue] =useState("");
return (
<View>
<Text>You Clicked {count} times! </Text>
<Button title="Click Me!" onPress={() => {setCount(count+1)}}/>
<Text>---------------------------------</Text>
<Switch
value={isOn}
onValueChange={(v) =>{
console.log(v);
setIsOn(v);
}}
/>
<Text>---------------------------------</Text>
<TextInput
placeholder="์ํ๋ ๊ฐ์ ์
๋ ฅํ์ธ์."
value ={value}
onChangeText = { (v) => {
console.log('v', v);
setValue(v);
}}
/>
</View>
)
}
export default Component;