์ฆ๊ฑฐ์ด Hacktoberfest! ๐ - ํํธ 4
3665 ๋จ์ด hacktoberfestopensource
์๊ฐ
์, 2021 Hacktoberfest ์ฌํ์ ๋ง์ง๋ง ์ฅ์ ๋๋ค. ์๊ฐ์ด ์ผ๋ง ๋จ์ง ์์๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ๋ฅผ ๋นจ๋ฆฌ ์๋ฃํ ์ ์์ง ์์๊น ์๊ฐํ์ต๋๋ค. ๋๋๊ฒ๋ ๋ด๊ฐ ํ๋ ธ๋ค.
Hacktoberfest์ ๋ง์ง๋ง ์ฃผ ๋์ ์์ ํ ์ ์ฅ์๋ฅผ ์ฐพ๋ ๊ฒ์ ์๋นํ ์ด๋ ค์ ์ต๋๋ค. ๊ทธ๋ฌ๋ค ๋ณด๋ ๊ธ์ฐ๋ค์ PR์ ์์งํ ์๋ฐ์ ์์๋ค. ๊ทธ๋ค ์ค ๋ง์ ์ฌ๋๋ค์ด JavaScript ๋๋ React ๊ธฐ๋ฐ ํ๋ก์ ํธ์์ ์ผํ๊ธฐ ๋๋ฌธ์ ํ๋๋ฅผ ์ฐพ๋ ๋ฐ ๊ทธ๋ฆฌ ์ค๋ ๊ฑธ๋ฆฌ์ง ์์์ต๋๋ค. ๊ฒฐ๊ตญ ์ ๋ GreenstandTreetracker(๋๋๊ฒ๋ ๋๋ฌด ์ฌ๊ธฐ์ฉ ์ฑ)๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๋ฌธ์
์ฒซ ๋ฒ์งธissue๋ ํ์ด์ง ์ค ํ๋๊ฐ ์ธ๋ก๋ก ์คํฌ๋กค๋์ง ์๋ CSS ๋์์ ํด๊ฒฐํ๋ ๊ฒ์ด์์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ๋ด ๋ก์ปฌ ์ปดํจํฐ์ ๋ณต์ ํ๋ ๋์ Treetracker ์น ์ฌ์ดํธ์ ๋ก๊ทธ์ธํ๋ ค๋ฉด ๊ด๋ฆฌ์ ์๊ฒฉ ์ฆ๋ช ์ด ํ์ํ๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์์ ๊ฐ๋ฐ์ ์ค ํ ๋ช ์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์๊ฒฉ ์ฆ๋ช ์ ์์ฒญํ ํ Slack ์๋ฒ์ ์ถ๊ฐ๋์๊ณ ๊ทธ๊ณณ์์ ๋ด๊ฐ ํ์ํ ๊ฒ์ ๊ฒ์ํ๊ณ ์์ ์ ์์ํ ์ ์์์ต๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์์ต๋๋ค. ์์น ์๋ ๋์์ ์์ธ์
overflow: hidden
๋ณด๊ธฐ์ Captures
์คํ์ผ์ด์๋๋ฐ, ํ์ด์ง๊ฐ ๋ค์ ์คํฌ๋กค๋๊ธฐ ์์ํ๋๋ก ํ๋ ค๋ฉด overflowY: scroll
๋ก ๋ณ๊ฒฝํด์ผ ํ์ต๋๋ค. PR ์ ์์ฑํ ํ ์คํฌ๋กคํ ๋์๋ ๋ด๋น๊ฒ์ด์
๋ฐ๊ฐ ๋งจ ์์ ๊ณ ์ ๋๋๋ก ํ๋ ํผ๋๋ฐฑ์ ๋ฐ์์ต๋๋ค. ํด๊ฒฐ์ฑ
์ ์ฐพ๊ธฐ ์ํด ์ธํฐ๋ท ๊ฒ์์ ํ๋ค๊ฐ overflowY
๋ณด๊ธฐ์์ Captures
๊ตฌ์ฑ ์์๋ก CaptureTable
์ด๋ํด์ผ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์ฌ๊ธฐ๊ฐ navbar๊ฐ ํฌํจ๋ ์์น์๊ธฐ ๋๋ฌธ์
๋๋ค.์๋ก์ด ๋ฒ๊ทธ ์ฐพ๊ธฐ
CSS ๋ณ๊ฒฝ์ ์ํ ๋ง๋ฌด๋ฆฌ ์์ ์ ํ๋ ๋์ ๋ ๋ค๋ฅธ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด์ ๋ฒํผ์ ๋๋ฌ๋ ํ์ด์ง ๋งค๊น์ด ๊ณ์ ๋ค์ ํ์ด์ง๋ฅผ ๋ก๋ํ๋ ๊ฒ์ ๋๋ค.
๋ฒ์ธ์
CaptureTable
๊ฐ ๋ฐ์ํ ๋ ํ์ด์ง ์ํ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ง ์์ onPageChange
๊ตฌ์ฑ ์์์ ์์ต๋๋ค. React์ ๋ํ ๋ด ์ง์์ ํ
์คํธํ ์ ์๋ ๊ธฐํ๋ผ๋ ๊ฒ์ ๊นจ๋ซ๊ณ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ ์ง์ ์๋ํ๊ณ ํด๊ฒฐํ ์ ์๋์ง ๋ฌผ์์ต๋๋ค.๋จผ์ ๋ฆฌ๋ ๊ฐ๋ฐ ์ ์์ ๋ฐ๋ผ Material UI
TablePagination
API๋ฅผ ์ฐพ๊ธฐ ์์ํ์ต๋๋ค. ์์ ์ ์์ ์ StackOverflow์์ ์๊ฐ์ ์ป์ด ์๋ฃจ์
์ ๋ง๋ค๊ธฐ ์์ํ์ต๋๋ค. ๊ณํ์ ๋ก์ปฌ page
์ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์๊ณ onPageChange
๊ฐ ๋ฐ์ํ๋ฉด page
๋์ page + 1
์ํ๋ฅผ ์ ํ์ด์ง์ ๊ฐ์ผ๋ก ์
๋ฐ์ดํธํ์ต๋๋ค.const [page, setPage] = useState(captureContext.page);
const handlePageChange = (e, newPage) => {
loadCaptures({
page: newPage,
// ...
});
};
์ด ์๋ฃจ์ ์ ๊ด์ฐฎ์์ง๋ง ์์ ๊ฐ๋ฐ์๋ ๋ก์ปฌ ์ํ๊ฐ ํ์ํ์ง ์๋ค๊ณ ๋ค์์ต๋๋ค. ๊ทธ๋ ํ์ด์ง ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ ผ๋ฆฌ๋ฅผ ๋ณด์ ํ๋
capturesContext
์ปจํ
์คํธ๋ฅผ ํ์ฉํ ๊ฒ์ ์ ์ํ์ต๋๋ค. ๊ทธ์ ์ ์์ ๋ฐ๋ผ ๋๋ ์ฝ๋๋ก ๋์๊ฐ์ ๋ ๋ง์ ์กฐ์ ์ ํ๊ณ ๊ฒฐ๊ตญ ์ฑ๊ณต์ ์ผ๋ก my PR ์ ๋ณํฉํ์ต๋๋ค.๊ฒฐ๋ก
Hacktoberfest๋ ํฅ๋ฏธ๋กญ๊ณ ์๋ก์ด ๊ฒฝํ์ด์์ต๋๋ค. ๋ค์ํ ํ๋ก์ ํธ์์ ๋ค์ํ ์ปค๋ฎค๋ํฐ์ ํ๋ ฅํ๋ฉด์ ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์์๊ณ ๋ฐฐ์ด ๊ฒ๋ณด๋ค ์กฐ๊ธ ๋ ๋ฐ์ ๋ ์์ ์ ๋์ ํ์ต๋๋ค. ์์ผ๋ก ์ด๋ค ์คํ ์์ค ์ด๋ฒคํธ๊ฐ ์ด๋ฆด์ง ๊ธฐ๋๋๋ฉฐ ์ด๋ณด๋ค ๋ ๋ง์ ์ ์ฅ์์ ๊ธฐ์ฌํ ์ ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
๋ชจ๋ ์ฆ๊ฑฐ์ด ํ ๋ก์ ๋ณด๋ด์ธ์! ๐ป
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(์ฆ๊ฑฐ์ด Hacktoberfest! ๐ - ํํธ 4), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/mqnguyen/happy-hacktoberfest-part-4-3543ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค