반업주부의 일상 배움사
[React Native] 타일형 버튼 세트 구현하기 본문
반응형
버튼을 탭하면 선택된 버튼만 다른 모양이 되는 버튼 세트에요.
import React, {useState} from 'react';
import {SafeAreaView} from 'react-native';
import styled, {css} from 'styled-components/native';
const ContainerBox = styled.View`
width: 100%;
`;
const TitleText = styled.Text`
text-align: center;
font-size: 35;
`;
const TopBox = styled.View`
flex-direction: row;
width: 100%;
align-items: center;
background-color: white;
justify-content: space-around;
flex-wrap: wrap;
`;
const MyButton = styled.Pressable`
width: 48%;
align-items: center;
background-color: oldlace;
border-radius: 10;
elevation: 2;
padding-vertical: 10;
margin-vertical: 4;
${props =>
props.selected &&
css`
background-color: coral;
`}
`;
const MyButtonText = styled.Text`
color: coral;
${props =>
props.selected &&
css`
color: white;
`}
`;
function ButtonSet(props) {
return (
<MyButton
selected={props.selected === props.title}
onPress={() => props.onPress(props.title)}>
<MyButtonText selected={props.selected === props.title}>
{props.title}
</MyButtonText>
</MyButton>
);
}
const App: () => Node = () => {
const [selectedTitle, setSelectedTitle] = useState('Button1');
const onPress = function (title) {
setSelectedTitle(title);
};
return (
<SafeAreaView>
<ContainerBox>
<TitleText>Title</TitleText>
<TopBox>
{Array.from({length: 6}, (_, i) => (
<ButtonSet
title={`Button${i + 1}`}
selected={selectedTitle}
onPress={onPress}
/>
))}
</TopBox>
</ContainerBox>
</SafeAreaView>
);
};
export default App;
영어, 중국어 공부중이신가요?
홈스쿨 교재. 한 권으로 가족 모두 할 수 있어요!
반응형
LIST
'IT 인터넷 > React Native & JS' 카테고리의 다른 글
React를 ChatGPT에게 배우다. (0) | 2023.02.06 |
---|---|
Vite 에서 process.env 를 사용하려면... (0) | 2022.08.10 |
[React.js] 반복문으로 객체 생성하기 :: v-for of Vue.js (0) | 2021.07.19 |
[React.js] useMemo와 useEffect (0) | 2021.07.19 |
[React.js] 단숨에 리덕스 익히기 :: react-redux (0) | 2021.07.17 |
Comments