React-Native Tutorial To do list [ #11 ]

μ‘°νŒ”λ‘œΒ·2020λ…„ 9μ›” 22일
0

React-Native-Todolist

λͺ©λ‘ 보기
11/15
post-thumbnail

React Native Tutorial λ”°λΌν•˜κΈ° πŸ“±

πŸ“Œ νŠœν† λ¦¬μ–Όμ„ λ”°λΌν•œ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€!

μƒνƒœ(State) μΆ”κ°€ν•˜κΈ°

todos μƒνƒœ μƒμ„±ν•˜κΈ°

ν•  일 λͺ©λ‘ μΆ”κ°€, μ‚­μ œ κΈ°λŠ₯ 등을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” μƒνƒœκ°’μ„ μ •μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. todos λΌλŠ” μ†μ„±μœΌλ‘œ μƒνƒœλ₯Ό μ •μ˜ν•΄μ„œ ν•  일 λͺ©λ‘μ˜ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜κ² μŠ΅λ‹ˆλ‹€. todos κ°μ²΄λŠ” μ•„λž˜μ™€ 같이 μ„Έ 가지 속성값을 κ°€μ§‘λ‹ˆλ‹€.

todos : {id: Number, textValue: string, checked: boolean }

id 각 λͺ©λ‘μ˜ 고유 아이디
textValue λͺ©λ‘ λ‚΄μš©
checked μ™„λ£Œ μ—¬λΆ€. (true이면 μ™„λ£Œ false이면 λ―Έμ™„λ£Œ)

λ³Έ νŠœν† λ¦¬μ–Όμ—μ„œλŠ” μƒνƒœ 관리λ₯Ό μœ„ν•΄μ„œ ν›…(hook)을 μ‚¬μš©ν•˜κ² μŠ΅λ‹ˆλ‹€.

ν›…(hook)은 λ¦¬μ•‘νŠΈ 버전 16.8에 μΆ”κ°€λœ κΈ°λŠ₯으둜 훅을 μ΄μš©ν•˜λ©΄ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλ„ μ»΄ν¬λ„ŒνŠΈμ˜ 상탯값을 관리할 수 있고 μ»΄ν¬λ„ŒνŠΈμ˜ 생λͺ… μ£ΌκΈ° ν•¨μˆ˜λ₯Ό μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν›…κ³Ό κ΄€λ ¨λœ λ‚΄μš©μ€ 링크λ₯Ό μ°Έμ‘°ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

훅을 μ‚¬μš©ν•˜κΈ° μœ„ν•œ useStateλ₯Ό import ν•˜κΈ°

app.js νŒŒμΌμ— μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”!

import React, {useState} from 'react';
const [todos, setTodos] = useState([]);

app.js 전체 보기

import React, {useState} from 'react';
import TodoInsert from './components/TodoInsert';
import TodoList from './components/TodoList';
import {SafeAreaView, StyleSheet, TextInput, View, Text, ScrollView} from 'react-native';

const App = () => {
  //  todos: {id: Number, textValue: string, checked: boolean }
  const [todos, setTodos] = useState([]);
  return (
    <SafeAreaView style={styles.container}>
      <Text style={styles.appTitle}>Hello Todolist</Text>
      <View style={styles.card}>
        <TodoInsert />
        <TodoList />
      </View>
    </SafeAreaView>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#3143e8',
  },
  appTitle: {
    color: '#fff',
    fontSize: 36,
    marginTop: 30,
    marginBottom: 30,
    fontWeight: '300', 
    textAlign: 'center',
    backgroundColor: '#3143e8',
  },
  card: {
    backgroundColor: '#fff',
    flex: 1,
    borderTopLeftRadius: 10,
    borderTopRightRadius: 10,
    marginLeft: 10,
    marginRight: 10,
  },
  input: {
    padding: 20,
    borderBottomColor: '#bbb',
    borderBottomWidth: 1,
    fontSize: 24,
    marginLeft: 20,
  },
});

export default App;

μΆ”κ°€ μ„€λͺ…

useState 훅은 인자둜 초기 μƒνƒœκ°’μ„ λ°›μŠ΅λ‹ˆλ‹€. number, string, array 등이 μΈμžκ°’μœΌλ‘œ λ“€μ–΄κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” ν•  일 λͺ©λ‘ 객체λ₯Ό 담을 배열이 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— 빈 λ°°μ—΄([])을 μΈμžκ°’μœΌλ‘œ λ„£μ–΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

useState 훅은 배열에 두 개의 값을 λ„£μ–΄ λ°˜ν™˜ν•©λ‹ˆλ‹€. 첫 번째 μš”μ†ŒλŠ” μƒνƒœκ°’μœΌλ‘œ, ν•¨μˆ˜ 호좜 μ‹œ μž…λ ₯ν•œ μΈμˆ˜κ°€ μ΄ˆκΈ°κ°’μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. 두 번째 μš”μ†ŒλŠ” μƒνƒœκ°’μ„ λ³€κ²½ν•  수 μžˆλŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. λ³Έ νŠœν† λ¦¬μ–Όμ—μ„œ todosλŠ” ν•  일 λͺ©λ‘μ˜ ν˜„μž¬ μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λ©° setTodosλŠ” todosλ₯Ό μ—…λ°μ΄νŠΈ ν•΄μ£ΌλŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

profile
ν˜„μ‹€μ— μ•ˆμ£Όν•˜μ§€ μ•Šκ³  - 개발자

0개의 λŒ“κΈ€