#9. ์ดํ๋ฉด ๋์์ธ ( CSS ์ ์ฉ ๋ฐ ํ๋ฉด Component์ ์ )
์ง๊ธ๊น์ง Pytho Flask Restful API ์ React ๋ก ๋งํฌ์๋น์ค์ ์ดํ๋ฉด์ ์ ์ํ๋ค.
์์ผ๋ก ํ ์ผ์ ์ ๋ฆฌํด์ ํ๋์ฉ ์งํํด ๋ณด๊ธฐ๋ก ํ๋ค.
โโTO-DO
- ๋ฑ๋กํ๋ฉด/ํธ์งํ๋ฉด ์ ์ ( ์ด๋ฏธ์ง ๋ฑ๋ก ํฌํจ )
- ์๋จ์ ์ปค๋ฒ ์ด๋ฏธ์ง ์ถ๊ฐ ( ์ปค๋ฒ ์ด๋ฏธ์ง ๋ณ๊ฒฝ ํฌํจ )
- ์ปค๋ฒ ์ด๋ฏธ์ง ๊ตฌ๊ฐ์ ์ผ์ ์ ํ์ ( ์ผ์ ๊ด๋ฆฌ CRUDํฌํจ )
- Drag&Drop์ผ๋ก ๋งํฌ ๋ฆฌ์คํธ ์์ ๋ณ๊ฒฝ ( ๋ชจ๋ฐ์ผ์์๋ Touch )
- ํ๊ทธ ํด๋ผ์ฐ๋ ํ์ ( CRUD๋ ์ ์ธ)
- ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ( ํ์๊ฐ์ ๋ถ๋ถ์ ์ ์ธ )
- ๊ตฌ๊ธ์ ๋๋ฆฌํฑ์ค(Google Analytics)์ ์ฐ๊ฒฐ
1.1. ๋ฑ๋กํ๋ฉด ์ ์
โ links.create.jsx ( ์์น: linkservice/client/src/component/links.create.jsx)
---------------------------------------------------------------------------------------------------
๊ธฐ๋ณธ์ ์ธ ๋ฑ๋ก ํญ๋ชฉ์ ๋ง๋ ๋ค. ( LinkCreateMain )
import React from "react";
export default function LinkCreateMain() {
return (
<>
<div>
<h1>๋งํฌ ๋ฑ๋ก</h1>
</div>
<div><label>๋งํฌ๋ช
</label></div>
<div><input type="text" name="name" /></div>
<div><label>ํ๊ทธ์ ๋ณด ( ํ๊ทธ ์ฌ๋ฌ๊ฐ ๋ฑ๋ก์ / ๋ก ๊ตฌ๋ถ )</label></div>
<div><input type="text" name="tag" /></div>
<div><label>๋งํฌ URL (์ฐ๊ฒฐํ๊ณ ์ ํ๋ URL)</label></div>
<div><input type="text" name="linkurl" /></div>
<div><label>์ฌ์ง ๋งํฌ ์ ๋ณด</label></div>
<div><input type="text" name="imageurl" /></div>
<div><button type="submit">๋ฑ๋ก</button></div>
</>
)
}
โ App.js์์ ์ถ๊ฐ์ ์ผ๋ก Route์ ์ง์ ํ๋ค.
App.js์ Route์ถ๊ฐ ํ http://localhost:3000/create ๋ก ์ ์ํด๋ณด์.
๊ทธ๋๋ input box์ ๋ํ ๋์์ธ๊ณผ ์ฌ์ง์ ์ง์ (PC) ๋ฑ๋กํ ์ ์๋๋ก ๋ฑ๋กํ๋ฉด์ ์ข ๊ฐ์ ํด ๋ณด๊ฒ ๋ค.
CSS์ ์๋ ๋ด์ฉ์ ์ถ๊ฐํ๋ค. ( links.css )
.title-container {
display: flex;
align-items: center;
justify-content: space-between;
}
.text-title {
text-align: center;
font-size: 18px;
}
.input-wrap {
display: flex;
flex-direction: column;
margin-top: 10px;
margin-bottom: 20px;
}
.input-wrap > label {
margin-bottom: 5px;
font-size: 14px;
}
.input-box {
height: 40px;
width: 100%;
position: relative;
}
.input-css {
height: 44px;
font-size: 14px;
padding: 14px 12px;
width: 100%;
margin: 3px;
box-sizing: border-box;
color: #343434;
border: 1px solid #d8d8d8;
border-radius: 8px;
background-color: bisque;
}
์๋์ ๊ฐ์ ๋งํฌ๋ช ๊ณผ ๊ฐ์ด input-wrap ์์ผ๋ก ๋ค๋ฅธ ํญ๋ชฉ๋ค๋ ๋ชจ๋ ์์ฑํ๋ค.
input-wrap > input-box > input-css ์ ๊ฐ ํญ๋ชฉ์ ์์ฐจ์ ์ผ๋ก ์ ์ฉ
์ผ๋ฐ INPUT BOX๋ ์์ ๊ฐ์ด ์ ์ฉํ๋ฉด ๋๋, ์ด๋ฏธ์ง ๋ถ๋ถ์ PC์ ์๋ ์ด๋ฏธ์ง๋ฅผ ์ง์ ๋ฑ๋กํ ์ ์๊ฒ ๊ธฐ๋ฅ์ ๋ถ์ฌํ๊ธฐ ์ํด์ ์๋ ๋ถ๋ถ์ ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค.
.img_contain {
display: flex;
margin-top: 10px;
margin-bottom: 20px;
}
.img_wrap {
display: flex;
width: 50%;
}
.img_box {
align-items: center;
width: 100%;
height: 150px;
object-fit: cover;
border-radius: 4px;
background-position: 50%;
background-repeat: no-repeat;
background-size: cover;
background-color: gray;
cursor: pointer;
}
.text_type {
display: flex;
align-items: flex-end;
margin-left: 10px;
}
http://localhost:3000/create ๋ก ํ์ธํด๋ณด์.
๋์์ธ์ด ์ด๋ ต๋ค๋ฉด bootstrap์ ์ ๊ณต๋๋ form styles์ ํ์ฉํด๋ ๋๋ค
์ฐธ๊ณ : https://getbootstrap.com/docs/4.0/components/forms/
โโ๋์์ธ ๋ถ๋ถ์ ์ด์ ๋๋ก ๋๋ด๊ณ ๋ค์์๋ ๊ธฐ๋ฅ ๊ตฌํ์ ํด๋ณด์.
'React&Python์ผ๋ก ์น๊ฐ๋ฐ > ๋งํฌ์๋น์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
#12. React์์ Drag & Drop์ ์ด์ฉํ ์ด๋ฏธ์ง ์ ๋ก๋ (0) | 2023.04.12 |
---|---|
#11. Reactํ๋ฉด์์ ๊ฐ ํญ๋ชฉ์ Input Value์ ๊ฐ์ ธ์ค๊ธฐ (0) | 2023.04.09 |
#9. ์ดํ๋ฉด ๋์์ธ ( CSS ์ ์ฉ ๋ฐ ํ๋ฉด Component์ ์ ) (0) | 2023.03.19 |
#8. ํ๋ก ํธ์๋ ํ๋ฉด๊ฐ๋ฐ (component ์ ์) (0) | 2023.03.17 |
#7. ํ๋ก ํธ์๋ ํ๋ฉด ๊ฐ๋ฐ (0) | 2023.03.16 |