728x90
반응형
* React Native 관련 책이 드디어 출간되어 구매 하였고, 하나씩 따라하며 기초를 다시 한 번 학습하기 위함
* reference : https://book.naver.com/bookdb/book_detail.nhn?bid=21166160
@ List
* 2.1 나만의 컴포넌트 만들기
* 2.2 Props
* 2.3 defaultProps
* 2.4 JSX 문법
* 2.5 StyleSheet로 컴포넌트에 스타일 입히기
* 2.6 Props 객체 구조 분해 할당
* 2.7 useState Hook으로 상태 관리하기
@ Result
# App.js
import React, { useState } from "react";
import { SafeAreaView, Button } from "react-native";
import Box from "./components/Box";
const App = () => {
const [visible, setVisible] = useState(true);
const onPress = () => {
setVisible(!visible);
};
return (
<SafeAreaView>
<Button title="토글 버튼" onPress={onPress} />
{/* {visible ? <Box rounded={true} size="large" color="blue" /> : null} */}
{visible && <Box rounded={true} size="large" color="blue" />}
</SafeAreaView>
);
};
export default App;
# component > Box.js
import React from "react";
import { View, StyleSheet } from "react-native";
function Box({ rounded, size, color }) {
return (
<View
style={[
styles.box,
rounded && styles.rounded,
sizes[size],
{ backgroundColor: color },
]}
/>
);
}
Box.defaultProps = { size: "medium", color: "black" };
const styles = StyleSheet.create({
box: {
backgroundColor: "black",
},
rounded: {
borderRadius: 16,
},
small: {
width: 32,
height: 32,
},
medium: {
width: 64,
height: 64,
},
large: {
width: 128,
height: 128,
},
});
const sizes = {
small: styles.small,
medium: styles.medium,
large: styles.large,
};
export default Box;
728x90
반응형
'React Native > React Native_study' 카테고리의 다른 글
[리액트 네이티브를 다루는 기술 #3] 3장 할일 목록 만들기1 (p.109 ~ 132) (0) | 2021.12.20 |
---|---|
[리액트 네이티브를 다루는 기술 #2] 2장 컴포넌트 (p.99 ~ 108) (1) | 2021.12.20 |
[React Native] #9 FlatList 로 데이터 나타내기 (0) | 2021.06.17 |
[React Native] #8 Open API를 활용한 날씨 데이터 가져오기 (0) | 2021.06.16 |
[React Native] #7 Google Maps 를 활용한 화면 구성 (0) | 2021.06.15 |