-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[4์ฃผ์ฐจ-TS] ๐ค๋ ธ์ธ์ฝ๋๋ฐฉ๐ค #7
base: main
Are you sure you want to change the base?
Changes from all commits
b3347a6
38b80a5
24b583c
f965535
19a0b9f
b7cce01
795497d
61fe632
a906ab3
8e6d000
b28ed64
39bb6b0
c910b98
332b879
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
pnpm-debug.log* | ||
lerna-debug.log* | ||
|
||
node_modules | ||
.env.local | ||
dist | ||
dist-ssr | ||
*.local | ||
|
||
# Editor directories and files | ||
.vscode/* | ||
!.vscode/extensions.json | ||
.idea | ||
.DS_Store | ||
*.suo | ||
*.ntvs* | ||
*.njsproj | ||
*.sln | ||
*.sw? |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8" /> | ||
<link rel="icon" type="image/svg+xml" href="/src/favicon.svg" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
<title>Vite App</title> | ||
</head> | ||
<body> | ||
<div id="root"></div> | ||
<script type="module" src="/src/main.tsx"></script> | ||
</body> | ||
</html> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
{ | ||
"name": "week4-ts", | ||
"private": true, | ||
"version": "0.0.0", | ||
"scripts": { | ||
"dev": "vite", | ||
"build": "tsc && vite build", | ||
"preview": "vite preview" | ||
}, | ||
"dependencies": { | ||
"@types/styled-components": "^5.1.25", | ||
"axios": "^0.27.2", | ||
"react": "^18.0.0", | ||
"react-dom": "^18.0.0", | ||
"styled-components": "^5.3.5", | ||
"styled-reset": "^4.4.1" | ||
}, | ||
"devDependencies": { | ||
"@types/react": "^18.0.0", | ||
"@types/react-dom": "^18.0.0", | ||
"@vitejs/plugin-react": "^1.3.0", | ||
"typescript": "^4.6.3", | ||
"vite": "^2.9.9" | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import GlobalStyle from "./styles/global"; | ||
import MainPage from "./pages/MainPage"; | ||
export default function App() { | ||
return ( | ||
<> | ||
<GlobalStyle /> | ||
<MainPage /> | ||
</> | ||
); | ||
} |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,31 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { Store } from "../types"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import Skeleton from "../components/Skeleton"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import StoreCard from "./StoreCard"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
interface ResultSectionProps { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
storeInfo: Store[]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
isCheck: boolean; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
isLoading: boolean; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
export default function ResultSection({ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
storeInfo, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
isCheck, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
isLoading, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}: ResultSectionProps) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+11
to
+17
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ปจ๋ฒค์ ์ฐจ์ด์ด์ง๋ง, ์๋์ฒ๋ผ ์ ์ธํ๊ธฐ๋ ํฉ๋๋ค! ๊ฐ๋ ์ฑ์ด ์ข๋ค๋ ์๊ฒฌ์ด ์๋ ๊ฒ ๊ฐ์์,, ๋ ์ฃผํจ
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ค..ํจ์ฌ ๋ณด๊ธฐ ํธํ๋ค์ ๊ฐ์ฌํฉ๋๋ค! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{isLoading && | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
new Array(10).fill(1).map((_, idx) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return <Skeleton key={idx} />; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
})} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{!isLoading && storeInfo.length === 0 ? ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<div style={{ color: "#fff" }}>๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.</div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) : ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
storeInfo?.map((store: Store, idx: number) => ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<StoreCard key={idx} store={store} isCheck={isCheck} /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
)} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+18
to
+28
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ค ๊ฐ์ธ์ ์ผ๋ก ์ค์ฒฉ ์ผํญ์ฐ์ฐ์๋ณด๋ค &&์ ์ผํญ์ฐ์ฐ์๋ฅผ ํจ๊ป ์ด ์ด ๋ฐฉ์์ด ํ์คํ ์ข ๋ ๊ฐ๋ ์ฑ ์ข์ ๋ฐฉ์์ธ ๊ฑฐ ๊ฐ์์! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ๋ณดํธ์ ์ผ๋ก ๋ง์ด ์ฐ์ด๋ eslint airbnb js ์คํ์ผ ๊ฐ์ด๋์ ์๋์ ๊ฐ์ ๋ฃฐ์ด ์๋๋ฐ ํ ๋ฒ ์ฝ์ด๋ด๋ ์ข์ ๊ฒ ๊ฐ์์! (๋ฌผ๋ก ์ด ๊ฐ์ด๋๋ ์ ๋ ์ ๋ต์ด ์๋๊ณ ํ์
ํ ๋๋ง๋ค ๋ค๋ฅธ lint๋ฃฐ์ ์ฌ์ฉํ๊ฒ ๋ ๊ฑฐ๋ผ ์ ๋ง ์ฐธ๊ณ ์ฉ์
๋ฏธ๋ค ! ) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ฐธ๊ณ ํ๊ฒ ์ต๋๋ค ๊ณ ๋ง์์!!
Comment on lines
+18
to
+28
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
ํน์ ์ด๋ฐ ์์ผ๋ก ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ํ๋ ๋ฐฉ์๋ ์์ ๊ฒ ๊ฐ์์ฌ ! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ํน์ ๋์ค์ ์๋ฒ์ฌ์ด๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ํ๋ฅผ ๋ก๋ฉ ์ํ ๋ฟ๋ง ์๋๋ผ ์๋ฌ ์ํ๊น์ง ํ์ฅ์ํจ๋ค๋ฉด ์ด๋ฐ ์์ผ๋ก switch-case๋ฌธ์ ์ด์ฉํ ์กฐ๊ฑด๋ถ๋ ๋๋ง์ ํ ์๋ ์์ ๊ฒ ๊ฐ์์ ! function Result({ isEmpty, keywordLocationData, status }: ResultProps) {
switch (status) {
case 'LOADING':
return <Loading />;
case 'ERROR':
return <ErrorFallback />;
default:
return isEmpty ? <NoResult /> : <CardList keywordLocationData={keywordLocationData} />;
}
} ๊ทผ๋ฐ ์ฌ์ค ์ด๊ฑฐ ๋ค ๊ฐ ์ทจ์ธ ์์ญ์ด๋ผ ์ ๋ต์ ์์ด์ ๊ฐ ์ทจ๋๋ก ๊ฐ๊ธฐ๋ฉด ๋ ๊ฑฐ ๊ฐ๊ธด ํด์ฌ ใ ใ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ ์ ๋ ๊ฒ ํ๋ฉด ๋๋๊ตฌ๋ ใ
ใ
์ ๋ฐ์์ผ๋ก ๊ฐ๊ฒจ๋ณผ๊ฒ์ฌ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,87 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import styled from "styled-components"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { useState, useEffect } from "react"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
interface SearchSectionProps { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
onClick: (isCheck: boolean, myTown: string) => void; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
export default function SearchSection({ onClick }: SearchSectionProps) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const [isCheck, setIsCheck] = useState<boolean>(false); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const [myTown, setMyTown] = useState<string>(""); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+9
to
+10
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. state๋ก input value๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋ค๋ฉด useInput๊ฐ์ ์ปค์คํ ํ ์ ์ ์ํด์ ์ฌ์ฉํด๋ ์ข์ ๊ฒ ๊ฐ์์! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ปค์คํ ํ ์ ๊ดํด์ https://react.vlpt.us/basic/21-custom-hook.html ์ด๋ฐ ์๋ฃ๋ค ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์ฌ ! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ด๋ฒ ๊ธฐํ์ ์ปค์คํ ํ ์ ํ ๋ฒ ์๋ํด๋ณผ๊ฒ์ฌ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
useEffect(() => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (isCheck) setMyTown(""); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}, [isCheck]); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<StWrapper> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<StCheckBoxWrapper> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<label htmlFor="checkbox">์ง์ญ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์</label> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<input | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type="checkbox" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
id="checkbox" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
onChange={() => setIsCheck(!isCheck)} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</StCheckBoxWrapper> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<StTextInputWrapper> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<label htmlFor="text">์ฐ๋ฆฌ ๋๋ค๋ ์ฌ๊ธฐ์์</label> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<input | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type="text" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
placeholder="์ง์ญ์ ์ ๋ ฅํด์ฃผ์ธ์." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+28
to
+31
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ฌ๊ธด id ์์ฑ์ด ๋น ์ง ๊ฒ ๊ฐ๋ค์??
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์๋ ฅ 3.0์ด์ธ์?? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
disabled={isCheck} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
value={myTown} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
onChange={(e) => setMyTown(e.target.value)} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</StTextInputWrapper> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<StSearchButton type="button" onClick={() => onClick(isCheck, myTown)}> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
๊ฒ์ํ๊ธฐ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</StSearchButton> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</StWrapper> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const StWrapper = styled.div` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
display: flex; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flex-direction: column; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
justify-content: center; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
align-items: center; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
padding: 10px 0; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gap: 10px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
font-size: 20px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color: #fff; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
border-bottom: 2px solid #fff; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
width: 100%; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+16
to
+56
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ด ๋ถ๋ถ formํ ๊ทธ๋ก wrappingํด์ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์!
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ๊ทผ๋ฐ form tag๋ฅผ ์ฐ๊ณ onSubmit์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ฉด ๋ํดํธ๋ก ๋ธ๋ผ์ฐ์ ์์ ์๋ก๊ณ ์นจํ๋ ๋์์ ๋ฃ์ด๋ฒ๋ ค์ onSubmit์ด๋ฒคํธ ๋ด๋ถ์ ๋ค์ด์๋ ํจ์์์ ๊ทธ๋ฐ ๋ถํ์ํ ๋ํดํธ ๋์์ ๋ง์์ค์ผ ํ๋๋ฐ (SPA์์ ์๋ก๊ณ ์นจ์ ๋ถํ์ํ ๋์์ด๋๊น์ฌ !) ๊ทธ๋ฌ๊ธฐ ์ํด์
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ 7์ฃผ์ฐจ ๊ณผ์ ์์ ์ด๋ฐ ์์ผ๋ก ์งฐ์๋๋ฐ ์ด๊ฒ๋ ๊ทธ๋ ๊ฒ ๋ฐ๊ฟ๋ณผ๊ฒ์! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const StCheckBoxWrapper = styled.div` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
display: flex; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
justify-content: center; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
align-items: center; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gap: 5px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
& > label { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color: #fff; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
font-weight: bold; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const StTextInputWrapper = styled.div` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
display: flex; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flex-direction: column; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
align-items: center; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gap: 10px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const StSearchButton = styled.button` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
border: none; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
border-radius: 10px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
background-color: #fff; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color: #000; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
font-weight: 700; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
width: 70px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
height: 25px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&:hover { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
background-color: #828282; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color: #fff; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
import styled, { keyframes } from "styled-components"; | ||
|
||
function Skeleton() { | ||
return ( | ||
<SkeletonWrapper> | ||
<SkeletonTitle /> | ||
<SkeletonInfo> | ||
<SkeletonPhone /> | ||
<SkeletonAddress /> | ||
</SkeletonInfo> | ||
</SkeletonWrapper> | ||
); | ||
} | ||
|
||
const loading = keyframes` | ||
0% { | ||
transform: translateX(0); | ||
} | ||
50%,100%{ | ||
transform:translateX(268px); | ||
} | ||
`; | ||
|
||
const LoadingAnimation = styled.div` | ||
overflow: hidden; | ||
position: relative; | ||
opacity: 0.5; | ||
|
||
&::before { | ||
content: ""; | ||
width: 20px; | ||
height: 80px; | ||
position: absolute; | ||
background: linear-gradient(to right, #bdbdbd, #fff, #bdbdbd); | ||
animation: ${loading} 1.5s infinite linear; | ||
} | ||
`; | ||
|
||
const SkeletonWrapper = styled.li` | ||
display: flex; | ||
flex-direction: column; | ||
height: 80px; | ||
background-color: #fff; | ||
border-radius: 10px; | ||
`; | ||
|
||
const SkeletonTitle = styled(LoadingAnimation)` | ||
margin: 10px 0 20px 20px; | ||
width: 90px; | ||
height: 20px; | ||
background-color: #bdbdbd; | ||
`; | ||
|
||
const SkeletonInfo = styled.div` | ||
display: flex; | ||
gap: 20px; | ||
`; | ||
|
||
const SkeletonPhone = styled(LoadingAnimation)` | ||
width: 90px; | ||
height: 20px; | ||
margin-left: 20px; | ||
background-color: #bdbdbd; | ||
`; | ||
|
||
const SkeletonAddress = styled(LoadingAnimation)` | ||
width: 140px; | ||
margin-right: 20px; | ||
background-color: #bdbdbd; | ||
`; | ||
|
||
export default Skeleton; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ํฌ. .. .์ค์ผ๋ ํค ๋ฉ์์ด์ฌ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ๋ฐ๋ธ์คํค์ด ๋ ๋ฉ์์ด์ฌ |
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,74 @@ | ||||||||||
import styled from "styled-components"; | ||||||||||
import { Store } from "../types"; | ||||||||||
|
||||||||||
interface StoreCardProps { | ||||||||||
store: Store; | ||||||||||
isCheck: boolean; | ||||||||||
} | ||||||||||
|
||||||||||
export default function StoreCard({ store, isCheck }: StoreCardProps) { | ||||||||||
const { place_url, place_name, phone, distance, address_name } = store; | ||||||||||
|
||||||||||
return ( | ||||||||||
<StCard> | ||||||||||
<a href={place_url || undefined}>{place_name}</a> | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
API ์
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ํ์ธํด๋ณด๋๊น ๋ถํ์ํ ๋ถ๋ถ์ด๋ค์... ๊ผผ๊ผผํ์ง ๋ชปํ๋ค์ |
||||||||||
<StCardInfo> | ||||||||||
<p className="info__tel">{phone || "๋ฒํธ ์์"}</p> | ||||||||||
{isCheck ? ( | ||||||||||
<p>{distance}m</p> | ||||||||||
) : ( | ||||||||||
<p className="info__address">{address_name}</p> | ||||||||||
)} | ||||||||||
</StCardInfo> | ||||||||||
</StCard> | ||||||||||
); | ||||||||||
} | ||||||||||
const StCard = styled.li` | ||||||||||
display: flex; | ||||||||||
flex-direction: column; | ||||||||||
justify-content: center; | ||||||||||
gap: 20px; | ||||||||||
width: 280px; | ||||||||||
height: 80px; | ||||||||||
font-size: 14px; | ||||||||||
background-color: #fff; | ||||||||||
color: #000; | ||||||||||
border-radius: 10px; | ||||||||||
|
||||||||||
& > a { | ||||||||||
height: fit-content; | ||||||||||
font-size: 16px; | ||||||||||
font-weight: 700; | ||||||||||
padding-left: 20px; | ||||||||||
cursor: pointer; | ||||||||||
color: inherit; | ||||||||||
} | ||||||||||
`; | ||||||||||
|
||||||||||
const StCardInfo = styled.div` | ||||||||||
display: flex; | ||||||||||
gap: 20px; | ||||||||||
width: 95%; | ||||||||||
font-weight: 400; | ||||||||||
justify-content: space-between; | ||||||||||
|
||||||||||
& > .info__tel { | ||||||||||
width: 100px; | ||||||||||
height: fit-content; | ||||||||||
min-height: 20px; | ||||||||||
display: flex; | ||||||||||
justify-content: center; | ||||||||||
align-items: center; | ||||||||||
margin-left: 20px; | ||||||||||
border-radius: 15px; | ||||||||||
background-color: #828282; | ||||||||||
color: #fff; | ||||||||||
font-size: 12px; | ||||||||||
font-weight: 700; | ||||||||||
text-align: center; | ||||||||||
} | ||||||||||
|
||||||||||
& > .info__address { | ||||||||||
max-width: 150px; | ||||||||||
} | ||||||||||
Comment on lines
+69
to
+73
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์คํธ ํด๋์ค๋ช ์ผ๋ก ์ ์ธํด์ฃผ์ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ๋ ธ๋๋ฐฉ ์นด๋ ์์ ์ ๋ณด ์ค์์ ์ ๋ชฉ ๋นผ๊ณ ๋๋จธ์ง๋ฅผ ๋ค pํ๊ทธ๋ก ํด๋์ class๋ก ๊ตฌ๋ถํ๋๋ฐ nth-child๋ก ๋ฐ๊พธ๋๊ฒ ๋ ์ข์๊น์?๊ทธ๋๋ nth-child๊ฐ ์๊ฐ์ด ์๋ฌ์๋๋ค ใ ใ ใ +) ๊ทธ๋ฅ ์ค์ปดํฌ๋ํธ๋ก ๋ง๋๋๊ฒ ๋ซ๊ฒ ๋ค๊ณ ์๊ฐ์ด ๋ค์์ต๋๋ค There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SC ๋ง๋ค๊ธฐ ์ค์ผ์ด ~~~~ |
||||||||||
`; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
import React from 'react' | ||
import ReactDOM from 'react-dom/client' | ||
import App from './App' | ||
|
||
ReactDOM.createRoot(document.getElementById('root')!).render( | ||
<React.StrictMode> | ||
<App /> | ||
</React.StrictMode> | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ํ์ ๊ด๋ จ ์์กด์ฑ์ ๊ฐ๋ฐํ๊ฒฝ์์ ํ์ํ๊ธฐ ๋๋ฌธ์
devDependencies
์ ์ ์ธํด์ฃผ์ด๋ ์ข์There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ํ ์คํค์คํค