새소식

기술 습관/React

[프로그래머스] 타입스크립트로 함께하는 웹 풀 사이클 개발 12-4

  • -

BoardList 생성 / BoardList style 생성

import React, { FC, useState } from "react"; import { useTypedSelector } from "../../hooks/redux"; import SideForm from "./SideForm/SideForm"; import { FiPlusCircle } from "react-icons/fi"; import { addButton, addSection, container, title } from "./BoardList.css"; type TBoardListProps = { activeBoardId: string; setActiveBoardId: React.Dispatch<React.SetStateAction<string>>; }; const BoardList: FC<TBoardListProps> = ({ activBoardId, setActivBoardId }) => { // header 내 게시판 리스트 const { boardArray } = useTypedSelector((state) => state.boards); const [isFormOpen, setIsFormOpen] = useState(false); return ( <div className={container}> {/* header 내 게시판 리스트 UI */} <div className={title}>게시판:</div> {boardArray.map((board, idx) => ( <div key={board.boardId}> <div>{board.boardName}</div> </div> ))} {/* 게시판 추가 버튼 UI */} <div className={addSection}> { isFormOpen ? <SideForm setIsFormOpen={setIsFormOpen}></SideForm> : <FiPlusCircle className={addButton} onClick={()=> setIsFormOpen(!isFormOpen)}/> } </div> </div> ); }; export default BoardList;
import { style } from "@vanilla-extract/css"; import { vars } from "../../App.css"; export const container = style({ display: 'flex', flexDirection: 'row', alignItems: 'center', flexWrap: 'wrap', // wrap 설정시 width를 줄일 경우 아래로 내려가도록 설정 rowGap: 15, // space 확보 minHeight: 'max-content', padding: vars.spacing.big2, backgroundColor: vars.color.mainDarker }) export const title = style({ color: vars.color.brightText, fontSize: vars.fontSizing.T2, marginRight: vars.spacing.big1, }) export const addButton = style({ color: vars.color.brightText, fontSize: vars.fontSizing.T2, cursor: 'pointer', marginLeft: vars.spacing.big1, ":hover": { opacity: 0.8 } }) export const boardItem = style({ color: vars.color.brightText, fontSize: vars.fontSizing.T3, backgroundColor: vars.color.mainFaded, padding: vars.spacing.md, borderRadius: 10, cursor: 'pointer', marginRight:vars.spacing.big1, ":hover":{ opacity: 0.8, transform: "scale(1.03)" } }) export const boardItemActive = style({ }) export const addSection = style({ }) export const smallTitle = style({ })
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.