-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[김주은] sprint9 #272
The head ref may contain hidden characters: "Next-\uAE40\uC8FC\uC740-sprint9"
[김주은] sprint9 #272
Conversation
…ithub-actions [Fix] delete merged branch github action
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
엔터를 치지 않고 검색할 때마다 알아서 검색되려면 onChange라는 함수를 이용해야 하고, 검색할때마다 함수가 실행되는 호출이 너무 많이 되는 부작용을 막기 위해서 디바운싱이라는 방법을 함께 사용해주면 더욱 좋습니다!
밑으로 내려가지 않게 드롭다운을 만드려면 position으로 해당 컴포넌트의 레이아웃을 띄워주면 될 것 같습니다!
주은님 이번 미션도 고생하셨습니다 :)
<li key={article.id} className={styles.article}> | ||
<div className={styles.titleImage}> | ||
<div className={styles.title}>{article.title}</div> | ||
<img |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
next.js를 사용할 때에는 next/image를 사용해주는 것이 가장 좋아요!
next/image는 이미지를 알아서 최적화 시켜주고, lazy loading을 지원합니다
|
||
async function getBestArticles(pageSize: number) { | ||
try { | ||
const res = await axios.get( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
axios를 통한 api 요청은 api파일에 따로 정리해둘 수 있어요!
export const fetchBestArticles = async (pageSize: number) => {
try {
const res = await axiosInstance.get('/articles', {
params: {
page: 1,
pageSize,
orderBy: 'like',
},
});
return res.data.results || res.data.list || [];
} catch (error) {
console.error('Failed to fetch best articles:', error);
throw error;
}
};
// BestArticles.tsx
const res = fetchBestArticles()
}; | ||
if (typeof window !== "undefined") | ||
window.addEventListener("resize", handleResize); | ||
getBestArticles(pageSize); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pagesize가 변경될때마다 getBestArticles함수를 요청하는 거라면 pagesize가 의존성배열에 들어가있는 useEffect에서 따로 호출해주는 것이 좋을 것같네요!
const [isOpen, setIsOpen] = useState(false); | ||
|
||
const toggleDropdown = () => { | ||
setIsOpen(!isOpen); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이전 값을 반전시켜주는 경우 setIsOpen(prev => !prev) 처럼 이전 값을 콜백 함수로 가져와서 변경해줄 수 있어요. 이렇게 작성해주셔야 예상치 못한 오류를 피하실 수 있어요 :)
요구사항
기본
심화
주요 변경사항
스크린샷
멘토에게
게시글 title에서 검색어를 입력하고 엔터를 치면 검색이 되도록 구현했는데 엔터를 치지 않고 자동으로 검색되도록 하는 방법이 궁금합니다! 시도해봤는데 자음 하나만 쳐도 검색어로 인식이 되는지 검색이 제대로 되지 않았습니다ㅠ
드롭다운 메뉴가 내려올 때 밑에 있는 내용들도 같이 내려가는데 이동하지 않고 고정되게 하는 방법이 궁금합니다!
셀프 코드 리뷰를 통해 질문 이어가겠습니다.