레이아웃 글로벌스타일 이벤트버블링

hyeseon han·2021년 10월 1일
0

레이아웃

프로젝트 전체의 UI구조
props.children 태그의 자식들은 따로 명시해주지 않더라도, 자동으로 children이란 이름으로 props로 넘어간다.


글로벌 스타일

모든 컴포넌트에 기본적으로 적용시켜주는 스타일
app.tsx에 적용한다.
global.css 지우고 style 폴더 삭제

// src_commons_styles_globalStyles.ts
import { css } from "@emotion/react";

export const globalStyles = css`
  @font-face {
    font-family: "myfont"; // 폰트이름
    src: url("/fonts/scifibit.ttf"); // 폰트위치
  }

  * {
    margin: 0;
    box-sizing: border-box;
    /* font-size: 30px; */
    /* font-family: "myfont"; */
  }
`;
// *{ } 여기에 넣으면 한번에 다 적용됨.
// app.tsx
import Layout from "../src/components/commons/layout";
import { Global } from "@emotion/react";
import { globalStyles } from "../src/commons/styles/globalStyles";

  return (
    <>
      <GlobalContext.Provider value={value}>
        <Global styles={globalStyles} />
        <ApolloProvider client={client}>
          <Layout>
            <Component {...pageProps} />
          </Layout>
        </ApolloProvider>
      </GlobalContext.Provider>
    </>
  );
}

export default MyApp;

이벤트 버블링

Row key={el._id} id={el._id} onClick={onClickRow}>
이 아이디값을 사용하기 위해서
  function onClickRow(event) {
    alert("클릭");
    alert(event.target.id)
  }

상세보기로 들어가기 위해서 id를 적는다.
문제점: 행의 어느 부분을 누르면 id 가 안나올 때가 있다.

  1. 이거를 column 에 다 하나하나 넣어주는 가장 쉬운 방법
key={el._id} id={el._id} onClick={onClickRow}
  1. 이벤트 버블링
    자식에서 부모로 이벤트 전파
    주의사항 currentTargrt
    그냥 targetcurrentTarget으로 바꿔줘야한다.
이게 currentTarget 클릭하면 이벤트가 전파 부모자식 둘다 이벤트가 실행된다.

0개의 댓글