Issue https://swiperjs.com/react Swiper React Components Swiper is the most modern free mobile touch slider with hardware accelerated transitions and amazing native behavior. swiperjs.com ํ์ฌ ํ๋ก์ ํธ์์ ์ฌ์ฉ์์๊ฒ ํ๋ก์ฐํ ๋งํ ์น๊ตฌ๋ฅผ ์๋จ ๋ฐ์์ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ด๋ ์น๊ตฌ ๋ฆฌ์คํธ๋ฅผ ํ ๋ฒ์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์๋๋ผ ์ด๊ธฐ์ 8๋ช ์ Friend Figure๋ง ๋ณด์ฌ์ฃผ๊ณ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ์์ ๊ฒฝ์ฐ์ ํํด์, 8๊ฐ์ ๋ฐฐ์๋ก ์ ๋์ ์ผ๋ก ์ฆ๊ฐํ๋ offset์ query๊ฐ์ผ๋ก ์ค์ ํ์ฌ ์๋ฒ์ API ํต์ ์ ํ๋ค. Carousel Slider ๊ธฐ๋ฅ์ ..
Issue ํ๋ก์ ํธ ๋์ค ํ์ ๊ฐ์ ์ฐฝ์ด ๋จ๊ธฐ ์ ์ ์ด์ฉ ์ฝ๊ด ๋์ ์ฐฝ์ ๋ํ ๋์์ธ ์์์ด ์ถ๊ฐ๋์๋ค. ์ฒ์์๋ ์ด์ฉ ์ฝ๊ด ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ์ง๋ง, ์ฒดํฌ ๋ฐ์ค ๊ด๋ จ ๊ธฐ๋ฅ์ ์์ผ๋ก๋ ๋ง์ด ์ฐ์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ธฐํ์ ์ค์ค๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๊ธฐ๋ก ํ์๋ค. Code ์ฐ์ , ๊ฐ ์ฒดํฌ ๋ฐ์ค์ ์ฒดํฌ ํ์ฑ์ ๋ํ ์ฌ๋ถ๋ฅผ ์ ์ฅํด์ฃผ์ด์ผ ์ด์ฉ ์ฝ๊ด ๋์ ์ฐฝ์์ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ ์ฒดํฌ ๋ฐ์ค์ Key๊ฐ์ ๋ํ ์ฒดํฌ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ Boolean Value๋ฅผ ์ง๋ ๊ฐ์ฒด๋ฅผ state๊ฐ์ผ๋ก ์ด๊ธฐํ ํ์๋ค. const [checkInfo, setCheckInfo] = useState({ webAccessCheck: false, privateInfoCheck: false, a..
Issue ํ์ฌ ํ๋ก์ ํธ์์ ๋๋ถ๋ถ์ ์ฌ์ด๋ ์ด๋ฒคํธ์ ๋ํ ๋ด์ฉ์ Modal ์ฐฝ์ด ๋์์ ธ ํ๋ฉด์ ๋๋๋ง๋๋ค. ์ด๋ฅผ ์ํด Modal ์ฐฝ์ ๋ํ Presentation Component์ธ BodyBlackout ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์๋ค. mport { useDispatch } from "react-redux"; import styled from "styled-components"; const BodyBlackout = ({ modalSort, setAuthModalVisible, isVisibleAuthModal, }) => { const dispatch = useDispatch(); if (isVisibleAuthModal) document.querySelector("body").style.setPr..
Infinite Scroll ๊ธฐ๋ฅ์ ํ์์ฑ ์๋๋ ์งํํ๋ ํ๋ก์ ํธ์ ๋ฉ์ธ ํ์ด์ง ๋ด์์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๊ฐ์ ธ์ ๋๋๋งํ๋ ๋ฐฉ์์ Carousel Slide ์์ง๋ง ๊ด๋ จ ๋์์ธ ์์์ด ๋ํญ ์์ ๋์๋ค. ์ด์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด ํน์ ์ง์ ์ ๋๋ฌํ์ ๋, ์ด๋ฅผ ์ธ์ํด ์๋ฒ์์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ Infinite Scroll ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค. ์ฒ์์๋ ํน์ ์ง์ ์ ๊ณ์ฐํ๊ธฐ ์ํด ScrollingElement ๋ด์ scrollTop๊ฐ์ ์ฌ์ฉํ์์ง๋ง, ์คํฌ๋กค์ด ๋๋ ์๋์ ๋ฐ๋ผ ๊ฐ์ด ํญ์ ๋ฐ๋๋ ์ด์์ scroll event ์์ฒด์ ์ฑ๋ฅ ์ ํ ๋ฌธ์ (๋๊ธฐ์ ์ผ๋ก ์ด๋ฒคํธ ๋ฐ์ํ ๋๋ง๋ค ํธ์ถ๋๋ ์ฝ๋ฐฑ ํจ์)๋ก ์ธํด Intersection Observer API๋ฅผ ์ฌ์ฉํด ๋ณด๊ธฐ๋ก ํ๋ค. In..
๋ฌธ์ ํ์ฌ mainPage redux store์๋ ํฌ๊ฒ ์ฝํ ์ธ ๋ฅผ ๋ณด์ฌ์ฃผ๋ contents์ ์ฌ์ฉ์ ๋ฐฉ์ ๋ณด์ฌ์ฃผ๋ roomList๊ฐ ์ ์ฅ๋์ด ์๋ค. redux-saga๋ฅผ ํตํด ์๋ฒ์ API ํต์ ์ ํ์ฌ ๊ฐ๊ฐ์ ๋ฐฐ์ด ๋ด์ ๋ฐ์ดํฐ๋ค์ ์ ์ฌํด์ฃผ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋๋ฐ, contents์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ค์ ์๋ฒ์์ ๋ฌธ์ ์์ด ๊ฐ์ ธ์ ์ ์ฅ๋๋ ๋ฐ๋ฉด์, roomList์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅ๋์ง ์์๋ค. ์ฒ์์๋ ์๋ฒ์ API ํต์ ํ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ค ์๊ณ Promise ํ์ ๋ฉ์๋์ธ then ๋ฉ์๋ ๋ด์์ ์ฝ์์ ์ฐ์ด๋ดค๋๋ฐ, ๋ฌธ์ ์์ด roomList์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ค๋ ๊ฐ์ ธ์๋ค. ๋ฌธ์ ํด๊ฒฐ ํ์ฐธ์ ํด๋น Blocker์ ๋ํด์ ๊ณ ๋ฏผํ ๊ฒฐ๊ณผ, ๋ฆฌ์กํธ ์์์ ๋ถ๋ณ์ฑ์ ์ง์ผ์ฃผ์ง ๋ชปํด ๋ฐ์ํ ๋ฌธ์ ..
๋ฌธ์ ํ๋ก์ ํธ ๋์ค ๊ฒ์์ฐฝ์ ์์ด๋ฅผ ์น๋ฉด ๋ณ ๋ฌธ์ ์์ด ์ฟผ๋ฆฌ ๊ฐ์ API path์ ๋ด์ ์๋ฒ์์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๋ฌด์ฌํ ๊ฐ์ ธ์ค์ง๋ง, ํ๊ธ์ ์น ๊ฒฝ์ฐ์๋ ํด๋น keyword์ ๊ฐ์ด ๊นจ์ง ์ํ๋ก ์ฟผ๋ฆฌ ๊ฐ์ ์๋ฒ์ ๋ณด๋ด ์ ๋๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์์๋ค. ๋ฌธ์ ํด๊ฒฐ_encodeURI https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/encodeURI encodeURI() - JavaScript | MDN encodeURI() ํจ์๋ URI์ ํน์ ํ ๋ฌธ์๋ฅผ UTF-8๋ก ์ธ์ฝ๋ฉํด ํ๋, ๋, ์ , ํน์ ๋ค ๊ฐ์ ์ฐ์๋ ์ด์ค์ผ์ดํ ๋ฌธ์๋ก ๋ํ๋ ๋๋ค. developer.mozilla.org The encodeURI()..
๋ฌธ์ "info_list": [ { "id": 1, "name": "์ฒ๊ณผ ์ํ", "category": "๋ฏผ๋ฐ", "address": "์ ๋ผ/์ ์ฃผ์", "min_people": 2, "max_people": 3, "min_price": 187000, "max_price": 264000, "image_url": "https://images.stayfolio.com/system/pictures/images/000/058/604/small/632cee6dc35346df1f2c6b5d586ed5e73ec7c8a7.jpg?1606199154" }, ( ... ) ] ๋ค์๊ณผ ๊ฐ์ด ์๋ฒ์์ ์๋ฐ ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ํ๋ฉด์ ๋๋๋งํ๊ณ ์ ํ๋ค. ์ด๋ ํค ๊ฐ ์ค min_price์ max_price๋ ์ํ๋ก ํ์๋์ด์ผ..