From 327f15eb3a4270857c75fe508ec4ccbd3b559cc1 Mon Sep 17 00:00:00 2001 From: SJ-Kwak Date: Mon, 29 Jan 2024 04:20:43 +0900 Subject: [PATCH] sdp-tech#11 feat: add market product page --- src/common/CustomHeader.tsx | 32 +++++---- src/components/Home/Market/DetailPage.tsx | 4 +- src/components/Home/Market/MarketTabView.tsx | 2 +- src/components/Home/Market/ProductPage.tsx | 70 ++++++++++++++++++++ src/pages/Home.tsx | 43 ++++++++---- 5 files changed, 118 insertions(+), 33 deletions(-) create mode 100644 src/components/Home/Market/ProductPage.tsx diff --git a/src/common/CustomHeader.tsx b/src/common/CustomHeader.tsx index 77a9dbb..28bbef6 100644 --- a/src/common/CustomHeader.tsx +++ b/src/common/CustomHeader.tsx @@ -56,23 +56,21 @@ const Toggletag = ({pressable} : ToggleButtonParams) => { const CustomHeader = ({ onSearch, onAlarm }: CustomHeaderProps) => { return ( - - - - - - - 상품 - - - 마켓 - - - - - - - + + + + + + 상품 + + + 마켓 + + + + + + ) } diff --git a/src/components/Home/Market/DetailPage.tsx b/src/components/Home/Market/DetailPage.tsx index 7573103..b3a2bc9 100644 --- a/src/components/Home/Market/DetailPage.tsx +++ b/src/components/Home/Market/DetailPage.tsx @@ -1,7 +1,7 @@ import { Dimensions, SafeAreaView, ScrollView, Text, TextInput, TouchableOpacity, View, StyleSheet } from 'react-native'; import { StackScreenProps, createStackNavigator } from '@react-navigation/stack'; import { HomeStackParams } from '../../../pages/Home'; -import LeftArrow from '../../../assets/common/LeftArrow.svg'; +import Arrow from '../../../assets/common/Arrow.svg'; import UnFilledLike from '../../../assets/common/UnFilledLike.svg'; import Search from '../../../assets/common/Search.svg'; import styled from "styled-components/native"; @@ -73,7 +73,7 @@ const DetailPageMainScreen = ({ navigation }: StackScreenProps { navigation.goBack(); }}> - + diff --git a/src/components/Home/Market/MarketTabView.tsx b/src/components/Home/Market/MarketTabView.tsx index 644e7fd..f09aa51 100644 --- a/src/components/Home/Market/MarketTabView.tsx +++ b/src/components/Home/Market/MarketTabView.tsx @@ -84,7 +84,7 @@ const MarketTabView = ({ navigation, route } : StackScreenProps { + // 한 줄에 2개씩 상품 아이템 배치 + const product = [...new Array(6).keys()] + const splitArrayIntoPairs = (arr: any[], pairSize: number) => { + return arr.reduce((result, item, index) => { + if (index % pairSize === 0) { + result.push([]); + } + result[result.length - 1].push(item); + return result; + }, []); + }; + const splitProduct = splitArrayIntoPairs(product, 2); + + return ( + + + 리폼러의 서비스 + + + { + return ( + {}} /> + ) + }} + slider + /> + + + 리폼러의 판매상품 + + + { + return ( + + {item.map((subItem: any) => ( + {}} /> + ))} + + ) + }} + dot + /> + + ) +} + +const LabelButton = styled.TouchableOpacity` + display: flex; + flex-direction: row; + padding: 16px; +` + +export default ProductPage; \ No newline at end of file diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index a608550..0a8ced7 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -2,42 +2,59 @@ import { useEffect, useState } from 'react'; import { SafeAreaView, Text, View } from 'react-native'; import styled from 'styled-components/native'; import { Filter14M } from '../styles/GlobalText'; -import { StackScreenProps, createStackNavigator } from '@react-navigation/stack'; + +import { + StackScreenProps, + createStackNavigator, +} from '@react-navigation/stack'; import { TabProps } from '../../App'; import { TouchableOpacity } from 'react-native-gesture-handler'; -import DetailPageScreen from '../components/Home/Market/DetailPage'; + import CustomHeader from '../common/CustomHeader'; +import MarketTabView from '../components/Home/Market/MarketTabView'; +import DetailPageScreen from '../components/Home/Market/DetailPage'; + export type HomeStackParams = { Home: undefined; + Market: undefined; DetailPage: { id?: number; }; -} +}; const HomeStack = createStackNavigator(); -const HomeScreen = ({ navigation, route }: StackScreenProps) => { +const HomeScreen = ({ + navigation, + route, +}: StackScreenProps) => { return ( ({ headerShown: false, })}> - - + + + ); }; -const HomeMainScreen = ({ navigation }: StackScreenProps) => { - +const HomeMainScreen = ({ + navigation, +}: StackScreenProps) => { return ( - {}} - /> + {}} /> + navigation.navigate('DetailPage', {})}> + 상품 디테일 + + navigation.navigate('Market')}> + 마켓 + - ) -} + ); +}; export default HomeScreen;