์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๊ตญ๋น์ง์
- js CRUD
- ์ฑ๋ฅ๊ฐ์
- css ๊ฟํ
- Firebase
- ์ผ๋์xํจ์คํธ์บ ํผ์ค
- github
- ๋ฆฌ์กํธ์ค๋ฅ
- foreach
- sqld 55ํ
- 2024 sqld
- sqld ์๊ฒฉ์ฆ ์ํ
- Filter
- ํ๋ก ํธ์๋๋ถํธ์บ ํํ๊ธฐ
- Where
- promise ๋น๋๊ธฐ์ฒ๋ฆฌ
- ๋ถํธ์บ ํ
- ๋ถํธ์บ ํ ์ทจ์ ํ๊ธฐ
- ๊ตญ๋น์ง์์ทจ์
- firebase rules
- ํจ์คํธ์บ ํผ์ค
- ์ผ๋์ fe 1๊ธฐ
- ํ๋ก ํธ์๋๊ฐ๋ฐ์
- ํจ์คํธ์บ ํผ์ค ๋ถํธ์บ ํ
- git
- reduce
- ํผ๋ธ๋ฆฌ์ ์ด์งํ๊ธฐ
- react hook
- TypeScript
- map
- Today
- Total
Tech is created to fix problem
[ํ๋ก์ ํธ] Wiki ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ ๋ณธ๋ฌธ
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ1
"index.html <head> ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ์"
index.html
<noscript>You need to enable JavaScript to run this app.</noscript>
์ด ํ๊ทธ์ ์๋ฏธ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํํ์ง ์์์ ํ์ฑํํ๋ผ๊ณ ์๋ดํ๋ ํ๊ทธ์ด๋ค.
React์์๋ index.html์์ ํด์ผํ ์ผ๋ค์ด ์๊ธฐ ๋๋ฌธ์ ํ์ฑํ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ฉฐ
๋ณดํต ํด์ผํ ์ผ๋ค์ google analytics ์ ๊ฐ์ด ๋ถ์ํ ๋๋ index.html ์ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๋ค.
ํน์ ํน์ ํ์ด์ง๋ ์ปดํฌ๋ํธ์์๋ง ๋ถ๋ฌ์์ผ ํ ์คํฌ๋ฆฝํธ๊ฐ ์๋ค๋ฉด?
React Helmet์ ์ฌ์ฉํ๋ฉด ๋๋ค.
React Helmet์ <head> ์ ๋ณด๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ์ปดํฌ๋ํธ์์ <head> ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ2
"useState์ ํ์ ์ง์ ์ต๊ดํ"
const [displaySidebar, setDisplaySidebar] = useState(false);
--> const [displaySidebar, setDisplaySidebar] = useState<boolean>(false);
์ํ ๊ด๋ฆฌํ ๋, ์ด๊ธฐ ์ํ์ ํ์ ์ ์ง์ ํด์ฃผ๋ ๊ฒ์ ์ต๊ดํํ์.
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ3
"๋ณด์ ํน์ ์ฝ๋ ๊ฐ๋ ์ฑ์ ์ํด url ๊ด๋ฆฌ๋ ๋ฐ๋ก ํ์"
a๋งํฌ์ ์ธ๋ถ ๋งํฌ๋ ํน์ img src์ ์ธ๋ถ ๋งํฌ๋ฅผ ๊ฐ์ ธ์ฌ ๋, ํ๊ฒฝ๋ณ์๋ ๋ค๋ฅธ ํ์ผ์์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ณด์์ด๋ ์ฝ๋ ๊ฐ๋ ์ฑ์ ์ข๋ค.
ํน์ a ๋งํฌ rel์ noopener ๊ณผ noreferrer ์์ฑ์ ๋ฃ์ด์ค๋ค๋ฉด, ๋งํฌ๊ฐ ์ ์ฐฝ์ผ๋ก ์ด๋ฆฌ๋ ์๋ ํ์ด์ง๋ก ๋์์ฌ ์ ์๊ฒ ํ๋์ง ์ ์ฐฝ์ ๊ธฐ์กด ํ์ด์ง์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๊ฐ์ง ๋ชปํ๋๋ก ๋ฐฉ์งํ ์ ์๋ค. ์ด๋ ๊ฒ ํด์ฃผ๋ฉด ๋ณด์์ ์ธ ์ธก๋ฉด์์ ์์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ4
"async/await ๋ try catch๋ฌธ ์ฌ์ฉ์ผ๋ก ์๋ฌ ํธ๋ค๋ง์ด ํ์์ด๋ค"
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ5
"useMemo๋ก ์ฑ๋ฅ์ ์ํฅ์ํค์"
Before)
if (location.pathname.startsWith("/employee/team")) {
selectedKey = "team";
} else {
selectedKey = "member";
}
After)
const selectedKey = useMemo(() => {
return location.pathname.startsWith("/employee/team") ? "team" : "member";
}, [location.pathname]);
Before)
const selectList = ['๊ณต๋ถ๊ฟํ', '์ด๋ฒคํธ', '์ ๋จธ'];
After)
const selectList = useMemo (() => ['๊ณต๋ถ๊ฟํ', '์ด๋ฒคํธ', '์ ๋จธ'],[])
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ6
"ํ ์ปดํฌ๋ํธ ์์์๋ ์คํ์ผ, ์ํ ์ ์ธ, ํจ์, ํ ๊ด๋ จ ๊ทธ๋ฃนํ ํด์ฃผ์"
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ7
"React.FC์ ์ฌ์ฉ์ ๊ฐ์ทจ"
Before)
const Slide: React.FC<ISlideProps> = ({ backgroundColor, text, imageSrc, link }) => {
After)
const Slide = ({ backgroundColor, text, imageSrc, link }: ISlideProps) => {
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ8
key๋ index๋ฅผ ํ์ฉํ๋ ๊ฒ๋ณด๋ค
key={work-time-data-${index}} ์ด๋ฐ ์์ผ๋ก ๊ณ ์ ํ ๋ฌธ์์ด ๊ฐ์ผ๋ก ๋ง๋ค๋๋ก ๊ถ์ฅ
์ด๋ค ํ์ด์ง์์๋ ๊ฒน์น ์ผ์ด ์๊ฒํ๊ธฐ ์ํด์!!!
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ9
์์ ๋ณ๋ ๊ด๋ฆฌ ์์ฒญ ์ถ์ฒ,,,,
๊ทธ๋ฅ string ๋ ์๋๊ณ "category1 | category2 | category3" ์ด๋ฐ์์ผ๋ก
๋ํ useEffect ํจ์๋ ์ต๋ช ํจ์๋ณด๋ค ์ด๋ฆ์ ๋ถ์ฌ์ฃผ๋ ๊ฒ๋ ์ถ์ฒ
Before)
useEffect(() => {
setLike(Number(likeData));
setCommentList(commentsListData);
}, []);
After)
์ด๋ฐ ๊ฒฝ์ฐ useEffect๊ฐ ๋ฌด์จ ์ญํ ์ ํ๋์ง ํจ์๋ช
์ ์ ์ด์ค๋ ๊ฐ๋
์ฑ์ ๋์์ด ๋ฉ๋๋ค.
useEffect(function setDefaultValueOnMount () {
// ..
}, [ ])
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ10
"ํ์ ์ ๋ถ๋ฌ์ฌ ๋๋ type ๋ช ์"
import type {MyType} from "./myModule";
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ11
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ ์ด์ .....๋ฆฌ๋๋ฏธ์ ์ ์ผ๋ฉด ์ข์
๐ผ๋ฆฌํฉํ ๋ง ๋ฆฌ๋ทฐ12
import ํ ๋, ๋ฅํ ์๋๊ฒฝ๋ก๋ฅผ ํผํ๋ ค๋ฉด path alias ์ฌ์ฉ ์ถ์ฒ
๋ค์ ํ์ ์๋ ๊ผญ ์๊ฐํ๋ฉด์
์ด์ ๊ฐ ์๋ ์ฝ๋ฉ์ ํ์,,,
'React.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก์ ํธ] okky ์ฌ์ดํธ ํด๋ก ์ด๊ธฐ์ธํ (0) | 2023.11.05 |
---|---|
[ํ๋ก์ ํธ] Wiki ํ๋ก์ ํธ ์ฑ๋ฅ, ์ด๋ฏธ์ง ์ต์ ํ (0) | 2023.11.05 |
[React] โ๏ธ๋ธ๋ผ์ฐ์ ๋ค๋ก๊ฐ๊ธฐโ๏ธ ์ด์ History๊ฐ ์๋ Home์ผ๋ก ์ด๋ํ๊ธฐ (1) | 2023.10.06 |
[React] useParams, useEffect, ์ค์ฒฉ๋ผ์ฐํ (0) | 2023.09.26 |
[React] ์ฉ์ด๋ณด๊ฐ ๋ฐ๋์ ๊ฒช๋ ์ค๋ฅ : ์ฆ์์คํํจ์ (0) | 2023.09.26 |