React-Native Tutorial To do list [ #15 ]

์กฐํŒ”๋กœยท2020๋…„ 9์›” 25์ผ
0

React-Native-Todolist

๋ชฉ๋ก ๋ณด๊ธฐ
15/15
post-thumbnail

React Native Tutorial ๋”ฐ๋ผํ•˜๊ธฐ ๐Ÿ“ฑ

๐Ÿ“Œ ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค!

ํ•  ์ผ ๋ชฉ๋ก ์™„๋ฃŒ ์ฒดํฌ ํ•˜๊ธฐ

๊ฐ ๋ชฉ๋ก์˜ ์™ผ์ชฝ์— ์žˆ๋Š” ํŒŒ๋ž€์ƒ‰ ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ฒดํฌ ํ‘œ์‹œ๊ฐ€ ๋˜๊ณ  ํ•œ ๋ฒˆ ๋” ๋ˆ„๋ฅด๋ฉด ์ฒดํฌ๊ฐ€ ํ•ด์ œ๋˜๋„๋ก ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๐Ÿ‘€

app.js์—์„œ onToggle ํ•จ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ

const onToggle = id => e => {
    setTodos(
      todos.map(todo =>
        todo.id === id ? {...todo, checked: !todo.checked} : todo,
      ),
    );
  };

์„ค๋ช…

onToggle ํ•จ์ˆ˜๋Š” ์•„์ดํ…œ์˜ id๋ฅผ ๋ฐ›์•„์™€์„œ ํ•ด๋‹นํ•˜๋Š” ์•„์ดํ…œ์˜ checked ์†์„ฑ๊ฐ’์„ ๋ฐ˜๋Œ€๋กœ ๋ณ€๊ฒฝํ•ด์ค๋‹ˆ๋‹ค. (true์ด๋ฉด false๋กœ, false์ด๋ฉด true๋กœ)

onToggle ํ•จ์ˆ˜ TodoList ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌํ•˜๊ธฐ

<TodoList todos={todos} onRemove={onRemove} onToggle={onToggle} />

TodoList ์ปดํฌ๋„ŒํŠธ์—์„œ onToggle ํ•จ์ˆ˜ ๋ฐ›๊ธฐ + TodoListItem ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๊ธฐ

const TodoList = ({todos, onRemove, onToggle}) => {
  return (
    <ScrollView contentContainerStyle={styles.listContainer}>
      {todos.map(todo => (
        <TodoListItem
          key={todo.id}
          {...todo}
          onRemove={onRemove}
          onToggle={onToggle}
        />
      ))}
    </ScrollView>
  );
};

TodoListItem ์ปดํฌ๋„ŒํŠธ์—์„œ, TouchableOpacity์— onPressOut ์ด๋ฒคํŠธ ์†์„ฑ์„ ์ƒ์„ฑ, onToggle() ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๊ธฐ

const TodoListItem = ({textValue, id, checked, onRemove, onToggle}) => {
  return (
    <View style={styles.container}>
      <TouchableOpacity onPressOut={onToggle(id)}>
        {checked ? (
          <View style={styles.completeCircle}>
            <Icon name="circledowno" size={30} color="#3143e8" />
          </View>
        ) : (
          <View style={styles.circle} />
        )}
      </TouchableOpacity>

text ๋ณ€๊ฒฝํ•˜๊ธฐ

<Text
  style={[
    styles.text,
    checked ? styles.strikeText : styles.unstrikeText,
  ]}>
  {textValue}
</Text>

๊ฒฐ๊ณผ๋ณด๊ธฐ

profile
ํ˜„์‹ค์— ์•ˆ์ฃผํ•˜์ง€ ์•Š๊ณ  - ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€