setCourseGoals((prev) => [enteredGoal, ...prev]);
<Pressable
style={({ pressed }) => pressed && styles.pressedItem}
android_ripple={{ color: "#210644" }}
onPress={() => onDelteGoal(id)}
>
<StatusBar style='light'/>
yarn global add react-devtools
react-devtools
<View style={styles.container}>Hello World</View>
<Text>List of goals...</Text>
<Button title='Tap me!' />
<TextInput placeholder='Your course goals!' />
source
속성에 require 함수를 통해 이미지를 가져온다.<Image style={styles.image} source={require("../assets/images/original.jpeg")} />
color
속성을 통해 색상 변경은 가능하다.<Text style={{ borderWidth: 1, borderColor: "red" }}>Hello World</Text>
container: {
flex: 1,
flexDirection: "row"
justifyContent: "flex-start",
alignItems: "flex-start",
}
flex: 1
은 컨테이너 내에서 사용할 수 있는 모든 공간을 차지하도록 확장하는 속성이다.flexDirection
의 기본값이 column이다.alignItems
의 기본값은 stretch이다. stretch는 쭉 늘린다는 의미이다.appContainer: {
flex: 1,
},
inputContainer: {
flex: 1,
},
goalsContainer: {
flex: 3,
},
android_ripple
속성을 추가하면 된다.<View style={styles.goalItem}>
<Pressable android_ripple={{ color: "#dddddd" }} onPress={() => onDelteGoal(id)}>
<Text style={styles.goalText}>{title}</Text>
</Pressable>
</View>
<View style={styles.goalItem}>
<Pressable
style={({ pressed }) => pressed && styles.pressed}
android_ripple={{ color: "#210644" }}
onPress={() => onDelteGoal(id)}
>
<Text style={styles.goalText}>{title}</Text>
</Pressable>
</View>
onChangeText
속성을 사용할 수 있다.onPress
속성을 사용할 수 있다.onPress
속성을 사용할 수 있다.<Pressable onPress={() => {}}>
<View style={styles.goalItem}>
<Text style={styles.goalText}>{title}</Text>
</View>
</Pressable>
alwaysBounceVertical
속성으로 ON/OFF 할 수 있다. → 스크롤 가능 영역을 넘지 않는 경우에만 적용된다.data
: 목록으로 출력할 데이터
renderItem
: 자동으로 data의 개별 항목을 매개변수로 받는다. 렌더링 할 JSX 코드를 return 한다.
매개변수인 개별 항목은 item에 실제 데이터 항목을 가지고 있고, index도 가진다.
alwaysBounceVertical
속성은 FlatList에도 똑같이 지원된다.열림/닫힘 태그를 사용하지 않는다.
<View style={styles.goalsContainer}>
<FlatList
data={courseGoals}
renderItem={(goal) => {
return (
<View style={styles.goalItem}>
<Text style={styles.goalText}>{goal.item}</Text>
</View>
);
}}
alwaysBounceVertical={false}
/>
</View>
data에 key 프로퍼티를 가진 객체를 주는 방법
data에 key 프로퍼티가 없는 경우, FlatList에 keyExtractor
속성을 추가하는 방법
keyExtractor는 모든 항목에서 key를 가져오라고 호출하는 함수를 가진다.
keyExtractor={(item, index) => {
return item.id;
}}
{modalIsVisible && <GoalInput onAddGoal={addGoalHandler} />}
visible
과 animationType
을 사용하면 좀 더 퀄리티 있는 모달을 만들 수 있다.<Modal visible={modalIsVisible} animationType='slide'>
<View style={styles.inputContainer}>
...
</View>
</Modal>