[TIL+DevLog]多種の機能2021と12/12を実現
今日作った
ArtListフィルタリングの実施
作品リストにフィルタエレメントを作成し、作品リストでフィルタハンドルをpropsに下げ、フィルタの交換を要求します.
ArtList賛の実施
最初はアートリストコンポーネントに作品カタログを直接送るようにしていましたが、これではHeartの状態を単独で管理することはできないので、それぞれの作品をコンポーネントとして出していました.
ArtDetail賛の実施
この部分は作者の詳細ページの賛と同じように体現されている.useEffectは、この作品のlike配列にlocalStorageのuserInfoのIDが含まれているかどうかに基づいて、賛状態をboolean値に変更し、このボタンをクリックしてaioxからdbの値の変更を要求し、賛状態を変更して再アップロードさせる.
useEffect(() => {
// axios 요청
const userInfo = localStorage.getItem('lumiereUserInfo');
instance
.get<ArtistDetailType>(
`/artists/${window.location.href.split('artistdetail/')[1]}`,
)
.then((res) => {
setArtistInfo([res.data].flat());
setIsLiked(
!![res.data][0].artistDetail.likes.find(
(el) => el === JSON.parse(userInfo || '{}')._id,
),
);
})
.catch((err) => {
console.log(err);
});
}, []);
すべてのページ名
「react-js-pagation」ライブラリを使用してページングを実現しました.サーバにaxiosリクエストを発行します.
このようにして、現在のページとページ全体を受信し、以下のコンポーネントとして簡単に体現する.やっぱりライブラリは便利
import Pagination from 'react-js-pagination';
import { PaginatorWrap } from './styled';
interface GreetingProps {
curPage: number;
totalPages: number;
pageChangeHandler: (page: number) => void;
}
const PageNation = ({
curPage,
totalPages,
pageChangeHandler,
}: GreetingProps) => {
return (
<PaginatorWrap>
<Pagination
activePage={curPage}
itemsCountPerPage={1}
pageRangeDisplayed={5}
totalItemsCount={totalPages}
prevPageText="<"
nextPageText=">"
onChange={pageChangeHandler}
/>
</PaginatorWrap>
);
};
export default PageNation;
今日の気持ち
サーバが変化するたびにタイプを変更するので、タイプスクリプトは本当に難しいようです.しかし使いやすい部分が多く、以降は絶対にバニラJavaScriptでコードを書くことはありません.
Reference
この問題について([TIL+DevLog]多種の機能2021と12/12を実現), 我々は、より多くの情報をここで見つけました https://velog.io/@developerjhp/TIL-DevLog-Lumiereテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol