์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- ๊นํ์ฌ์ดํธ
- ๋ฅ๋ฌ๋
- ICT์ง์
- styled-components
- ํ๋ก ํธ์๋
- ํ ์คํธ ์ธํธ
- axios์ธ์คํด์ค
- ICT์ธํด์ญ
- ์์
- svg์
- react
- ์์ด๋์ค๋ณต
- java 11 ์ค์น
- CSS
- ํผ๊ณต๋จธ์
- ๋จธ์ ๋ฌ๋
- XCode
- ์ทํ๊ท๊ฑธ์ด
- api๊ณตํตํ
- ์ฒดํฌ๋ฐ์ค์ปค์คํ
- ๋งฅ๋ถ
- ios
- ๊นํ์๋ฌ
- ๊ณผ๋์ ํฉ๊ณผ ๊ณผ์์ ํฉ
- ์๋ฆฟ์์ ํ
- M1
- ํผ์ ๊ณต๋ถํ๋ ๋จธ์ ๋ฌ๋
- ์ปด๊ณต์ ๋ฐฐ
- ์ปค์คํ
- ICTํ๊ธฐ
- Today
- Total
๋ชฉ๋กReact (9)
Hi-๋๐ High-๋โ๏ธ

๊ธฐ์กด Input์์ ์ ๊ณตํ๋ RadioButton์์ ์๋ง ๋ฐ๊พธ๊ณ ์ถ์์ ๋ฟ์ธ๋ฐ, ์๊ฐ๋ณด๋ค ์๋ฃ๋ค์ด ๋ง์ง ์์๋ค. ์ปค์คํ ํ๋ค๋ ๋ด์ฉ์ ์ดํด๋ณด๋ฉด radio ํน์ ์ ๋๊ทธ๋ผ๋ฏธ 2๊ฐ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ์๋ณด๋ค, ์์ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ค์์๋ค. ๊ทธ๋์ ๋์ฒ๋ผ ๊ณ ๋ฏผํ๋ ์ฌ๋๋ค์ ์ํด RadioButton ์ปค์คํ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ๋ค! ๋จผ์ , ๋ด๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ๋ชจ์์ ๋ค์๊ณผ ๊ฐ์๋ค. ๊ณ ๋ คํด์ผ ํ ์ ์ ์ ํ๋์์ ๋ 1. ๋ด๋ถ์ ๋๊ทธ๋ผ๋ฏธ๊ฐ ์๊ฒจ์ผ ํ๋ฉฐ 2. icon์ ์๊ณผ label์ ์์์ด ๋ฐ๋์ด์ผ ํ๋ค ๋ ๊ฒ์ด๋ค. ๋ค๋ฅธ ๊ฒ๋ณด๋ค ๋๋ css์ ๋ํด ์ ๋ชจ๋ฅด๊ณ ์์ด์, 1๋ฒ์ ์ด๋ป๊ฒ ๊ตฌํํด์ผ ํ๋์ง ๋ง๋งํ๋ค. ์ฌ๊ธฐ์๋ ๋ค์๊ณผ ๊ฐ์ css์ ๋ํด ์๋ ๊ฒ์ด ์ค์ํ๋ค. ๊ฐ์ ์ ํ์ :after ์ ํํ..

1. ์ค์น ๋ฐฉ๋ฒ ์ค์น ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. react-datepicker๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค. npm install react-datepicker 2. ์ฌ์ฉ ๋ฐฉ๋ฒ import import DatePicker from "react-datepicker"; // ๊ธฐ๋ณธ ์ค์ 1 import "react-datepicker/dist/react-datepicker.css"; // ๊ธฐ๋ณธ ์ค์ 2 import { ko } from "date-fns/esm/locale"; // ํ๊ตญ์ด ์ค์ ๋จผ์ ์ํ๋ ํ์ผ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ import ํ๋ค. ์์ ๋๊ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ฌ์ค๋ค. ๊ธฐ๋ณธ ์ธ์ด๋ ์์ด๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ๊ตญ์ด๋ก ์ค์ ํ๊ธฐ ์ํด์๋ ์์ ๊ฐ์ด import ํด์ผ ํ๋ค. ๋ณ์ ์ ์ธ const t..

๋ด๊ฐ ํ๋ ํ๋ก์ ํธ์์ ์๋ฆผ ์ค์ ์ ์ํด ํ ๊ธ ์ค์์น๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. 1. ํ ๊ธ ์ค์์น๋? ๐ก ํ ๊ธ ์ค์์น ํ ๊ธ ์ค์์น๋ ์ฐ๋ฆฌ๊ฐ ํํ ์๋ ๋ฌผ๋ฆฌ์ ์ค์์น์ฒ๋ผ "ON/OFF"์ ๊ฐ์ด ๋๊ฐ์ง ๋ฐ๋๋๋ ์ํ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ค. ์ฌ์ฉ์๊ฐ ์ค์์น๋ฅผ ๋๋ฅผ ๋๋ง๋ค ์ํ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋๋ก ํด์ผํ๋ค. 2. ํ ๊ธ ์ค์์น ๊ตฌํ ๊ฒฐ๊ณผ 3. ์ค์ Point ๐ฑ props ์ด์ฉํ๊ธฐ props๋ก toggle์ ์ํ(on/off)๋ฅผ ๋๊ฒจ์ฃผ์ด css ๋ถ๋ถ์์ ์กฐ๊ฑด๋ถ๋ก ์คํ์ผ๋ง์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์๋ค. (ex) ${props => props.isToggleOn ? 'background-color: #7BAB6E' : 'background-color: #CECECE' }; ๐ฑ transition ์ฌ์ฉํ๊ธฐ ํ ๊ธ ๋ฒํผ์ด ์์ฐ์ค๋ฝ๊ฒ ์์ง์ผ..

โ ๋ฌธ์ ์ํฉ ๊ธฐ์กด์ ํ๋ ํ๋ก์ ํธ๋ฅผ ์ด์ด์ ์์ ํ๊ธฐ ์ํด git clone์ ๋ฐ๊ณ npm start์ ํ๋ ค๊ณ ํ๋๋ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋ด๋ค. sh: react-scripts: command not found package.json์ ๋ด๋ startํ๋ผ๊ณ ๋์์๊ณ , ํญ์ react์ฑ์ npm start๋ก ์ผฐ๊ธฐ ๋๋ฌธ์ ๊ฝค๋ ๋นํฉํ๋ค. ๐ณ ํ์ง๋ง ๋น์ฐํ๊ฒ๋ ์๋ก clone ๋ฐ์์๊ธฐ ๋๋ฌธ์ package.json ๋ด์ ๋ชจ๋ dependency๋ฅผ ๋ค์ด๋ฐ์ ํ์๊ฐ ์์๋๋ฐ, ๊ทธ๊ฑธ ๋ฌด์ํ๊ณ ๋ฌด์์ npm start๋ฅผ ํ์ผ๋ ์คํ์ด ๋ ๋ฆฌ๊ฐ ์์๋ค. ๐ซ ๐ซ ํด๊ฒฐ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. ๐ก ํด๊ฒฐ ๋ฐฉ๋ฒ npm intall // or npm i npm intall์ ํตํด ๋ชจ๋ ํจํค์ง๋ค์ ์ค์นํด์ฃผ๋ฉด ๋ฌธ์ ๋ ํด๊ฒฐ๋๋ค! ์ด๋ฒ ๋ฟ..

๊ธฐ์กด์๋ API ์ฐ๊ฒฐ์ ์ํด์ proxy์ค์ ์ ํ๊ณ ํธ์ถํ ๋ endpoint ๊ฒฝ๋ก๋ฅผ ์ ์ด์ฃผ์๋ค. ๊ทธ๋ฐ๋ฐ CORS์ค์ ์ด ์๋ฃ๋๊ณ ๋ ์ด์ proxy๊ฐ ํ์ ์๊ฒ ๋์ด ์ญ์ ํ๋๋ ๋งค ํธ์ถ๋ง๋ค ์ ์ฒด ์ฃผ์๋ฅผ ์ ์ด์ผ ํ๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ๊ฒฝ๋ณ์์ axios ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ณตํต์ ์ธ ๋ถ๋ถ๋ค์ ๊ด๋ฆฌํ๊ณ ์ ํ๋ค. 1. ํ๊ฒฝ๋ณ์ ์ค์ ๋จผ์ ํ๊ฒฝ๋ณ์๋ฅผ ์ธํ ํด์คฌ๋ค. ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ง๊ธ์ ๊ฒฝ์ฐ์ฒ๋ผ ํ๋์ฝ๋ฉ๋ ๊ฐ๋ค์ ๋์ฒดํ ์ ์๋ค๋ ์ฅ์ ๋ ์๊ณ , ์ด ์ธ์๋ ์ฌ๋ฌ ์ฅ์ ์ด ์๋ค. ์คํ ์์ค์ ์ฌ๋ฆฌ๋ฉด ์ ๋๋ ๊ฐ๋ค์ .envํ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ ๋ณด์์ฑ์ ๋์ผ ์ ์๊ณ , ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์ค์ ๋ฐฐํฌ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ์ค์ ๋ ๋ถ๋ฆฌํ ์ ์๋ค. ์์ฑ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ๋จผ์ ํ๋ก์ ํธ์ ์ต์์ ๋ฃจํธ์ .envํ์ผ์ ๋ง..

ํ๋ก์ ํธ๋ฅผ ํ๋ค ๋ณด๋ฉด ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ณ , ๋ณด๋ด์ผ ํ๋ ์ํฉ์ด ์๊ธด๋ค. ์์๋ฅผ ํตํด axios๋ฅผ ์ด์ฉํ์ฌ API๋ฅผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์! 1. axios ์ค์นํ๊ธฐ API๋ฅผ ํธ์ถํ๊ธฐ ์ํด์ axios๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด์ผ ํ๋ค. // 1. npm์ ์ด์ฉํ์ฌ ์ค์นํ๋ ๊ฒฝ์ฐ npm install axios // 2. yarn์ ์ด์ฉํ์ฌ ์ค์นํ๋ ๊ฒฝ์ฐ yarn add axios ์ค์นํ๋ค๋ฉด ์ฌ์ฉํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์์ import๋ฅผ ํด์ผ ํ๋ค. import axios from "axios"; ์ด๋ ๊ฒ API๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๊ฐ ๋์๋ค. ์ฐ๋ฆฌ๋ API๋ฅผ ์ฌ์ฉํด์ ์๋์ ๊ฐ์ ๋์์ ํ ์ ์๋ค. Create : ๋ฐ์ดํฐ ์์ฑ(POST) Read : ๋ฐ์ดํฐ ์กฐํ (GET) Update : ๋ฐ์ดํฐ ์์ (..

์๋ ์์ผ์ ๋ฐ๋ Input ์ปดํฌ๋ํธ์์ ์ฐ๋๋ 4์๋ฆฌ, ๋ฌ์ 2์๋ฆฌ, ๋ ์ง๋ 2์๋ฆฌ๋ก ์ง์ ํ๊ณ ์ถ์๋ค. ๊ทธ๋์ ์ฐพ์๋ดค๋๋ Inputํ๊ทธ์ maxlength๋ฅผ ์ง์ ํ๋ฉด ๊ธธ์ด๋ฅผ ์ ํํ ์ ์์ผ๋, ํ์ ์ด number์ธ ๊ฒฝ์ฐ์๋ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค. ๋ฐ๋ผ์ ์ง์ onChangeHandler์์ ๋ค๋ค์ผ ํ๊ณ , ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ณ ์ณค๋ค. const yearChangeHandler = (e) => { setUserInfo({ ...userInfo, year: e.target.value.slice(0, 4) }); }; const monthChangeHandler = (e) => { setUserInfo({ ...userInfo, month: e.target.value.slice(0, 2) }); }; const d..

ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค ๋ณด๋ ์ฒดํฌ๋ฐ์ค๋ฅผ ๋ด๊ฐ ์ํ๋ ๋์์ธ์ผ๋ก ์ปค์คํ ์ ํด์ผ ํ๋ค. ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ ์ฒดํฌ๋ฐ์ค๋ ๋ด๊ฐ ์ํ๋ ์คํ์ผ๊ณผ๋ ๊ฝค๋ ๋ค๋ฅด๊ฒ ์๊ฒผ๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด Checkbox ์ปดํฌ๋ํธ๋ฅผ ์๋ก ๋ง๋ค๊ธฐ๋ก ํ๋ค. ์ฝ๋ Checkbox.js import { CheckboxStyle, CheckboxWrapper, StyledLabel } from "./style"; const Checkbox = ({ id, label, checked, handler }) => { return ( {label} ); }; export default Checkbox; ๋จผ์ , ๊ฐ ์ปค์คํ ํ Checkbox์ธ ๊ณผ ์ ๊ฐ์ธ๋๋ก ํ๋ค. Checkbox๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด input type์ "checkbox"๋ก ์ง์ ํด ์ฃผ๊ณ , ..

๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๋ค ๋ณด๋ ํ ๋ง์ ๋ฐ๋ผ ์ด๋ฏธ์ง์ ์์๋ ๋ฐ๊ฟ์ผ ํ๋ค. SVGํ์ผ์ ๊ฒฝ์ฐ ๋งํฌ์ ์ธ์ด๋ก ํํ๋๊ธฐ ๋๋ฌธ์ ์์์ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค. 1 ) SVG ํ์ผ ์์ ํ๊ธฐ SVGํ์ผ์ ์์์ ๋ฐ๊พธ๋ ค๋ฉด ๋จผ์ ์์ ์ฝ๋์ฒ๋ผ fill="none"์ผ๋ก ์์ฑ๋์ด ์๋ ๋ถ๋ถ์ fill="current"๋ก ๋ฐ๊ฟ์ผ ํ๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ๋ชจ๋ fill์ ๋ฐ๊ฟ์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ๋ด๊ฐ ๋ฐ๊พธ๊ณ ์ถ์ svgํ์ผ์ ๊ฒฝ์ฐ fill์ด 2๊ตฐ๋ฐ ์์๋ค. ํ ๊ตฐ๋ฐ๋ง ๋ฐ๊ฟจ์ ๋๋ ์๋์ด ์ ๋๋ค. 2 ) fill ์์ฑ ์ง์ ํ๊ธฐ SVGํ์ผ์ ์์ ํ์ผ๋ฉด ํด๋น ์ปดํฌ๋ํธ๋ก ๊ฐ์ props๋ฅผ fill="#A0A0A0"์ ๊ฐ์ด ์ง์ ํ๋ฉด ์์์ด ๋ฐ๋๋ค. ๋ค๋ง ์ฌ๊ธฐ์๋ ์ฃผ์ํด์ผ ํ๋ ๋ถ๋ถ์ด ์๋ค. SVGํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด img src๋ฅผ ์ด์ฉ..