-
Notifications
You must be signed in to change notification settings - Fork 51
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
경북대 FE_이효은_1주차 과제 Step3 #85
base: hyoeunkh
Are you sure you want to change the base?
Changes from 26 commits
79fba18
e766839
912bde4
209be07
557587d
214c3cf
0691fbb
14cd625
a1f5f90
9cdb654
fc406c9
3033e28
b4118a7
99aa0e8
105072b
540efc7
267ade8
5a8e0d7
cee7551
b9cb66d
18da5d2
00c7b9c
20143d4
1164797
a3f20b1
e65d2c7
0c92c89
e0a9e94
eb79af2
a3d5b2e
7f91189
b75eff0
2862a8c
7d9b09e
a0f86cf
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
{ | ||
"parser": "@typescript-eslint/parser", | ||
"plugins": ["react", "@typescript-eslint", "prettier"], | ||
"extends": [ | ||
"eslint:recommended", | ||
"plugin:react/recommended", | ||
"plugin:@typescript-eslint/recommended", | ||
"plugin:prettier/recommended", | ||
], | ||
"rules": { | ||
"@typescript-eslint/explicit-module-boundary-types": "off", | ||
"react/react-in-jsx-scope": "off", | ||
}, | ||
"settings": { | ||
"react": { | ||
"version": "detect", | ||
}, | ||
}, | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. | ||
|
||
# dependencies | ||
/node_modules | ||
/.pnp | ||
.pnp.js | ||
|
||
# testing | ||
/coverage | ||
|
||
# production | ||
/build | ||
|
||
# misc | ||
.DS_Store | ||
.env.local | ||
.env.development.local | ||
.env.test.local | ||
.env.production.local | ||
|
||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
node_modules | ||
|
||
*storybook.log |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
"arrowParens": "always", | ||
"printWidth": 120, | ||
"singleQuote": true, | ||
"trailingComma": "all", | ||
"tabWidth": 2, | ||
"useTabs": false, | ||
"semi": true, | ||
"endOfLine": "auto" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import type { StorybookConfig } from '@storybook/react-webpack5'; | ||
import path from 'path'; | ||
|
||
import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin'; | ||
|
||
const config: StorybookConfig = { | ||
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], | ||
addons: [ | ||
'@storybook/preset-create-react-app', | ||
'@storybook/addon-onboarding', | ||
'@storybook/addon-links', | ||
'@storybook/addon-essentials', | ||
'@chromatic-com/storybook', | ||
'@storybook/addon-interactions', | ||
], | ||
framework: { | ||
name: '@storybook/react-webpack5', | ||
options: {}, | ||
}, | ||
staticDirs: ['../public'], | ||
webpackFinal: async (config) => { | ||
if (config.resolve?.plugins) { | ||
config.resolve.plugins = config.resolve.plugins || []; | ||
config.resolve.plugins.push( | ||
new TsconfigPathsPlugin({ | ||
configFile: path.resolve(__dirname, '../tsconfig.json'), | ||
}), | ||
); | ||
} | ||
return config; | ||
}, | ||
}; | ||
export default config; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import type { Preview } from '@storybook/react'; | ||
|
||
const preview: Preview = { | ||
parameters: { | ||
controls: { | ||
matchers: { | ||
color: /(background|color)$/i, | ||
date: /Date$/i, | ||
}, | ||
}, | ||
}, | ||
}; | ||
|
||
export default preview; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,37 @@ | ||
# react-gift-react-foundation | ||
FE 카카오 선물하기 1주차 과제: React 기초 | ||
|
||
## FE 카카오 선물하기 1주차 과제: React 기초 | ||
|
||
1. create-react-app 으로 프로젝트 생성 및 typescript로 동작되도록 세팅 | ||
2. tsconfig 설정 | ||
3. ESLint, Prettier 설정 | ||
4. emotion reset css 적용 | ||
5. gitignore 추가 | ||
6. 불필요한 코드 및 파일 제거 | ||
7. 폴더 생성 | ||
|
||
## 폴더 구조 설명 | ||
|
||
```bash | ||
.root | ||
├── node_modules | ||
├── public | ||
├── src | ||
│ ├── assets // 이미지, 폰트 등 미디어 파일 | ||
│ ├── components // 주요 컴포넌트 | ||
│ ├── hooks // 커스텀 훅 | ||
│ ├── pages // 페이지 컴포넌트 | ||
│ ├── services // api | ||
│ ├── store // 상태관리 | ||
│ ├── styles // css | ||
│ └── utils // 공통함수, 상수 등 | ||
└── | ||
``` | ||
|
||
## 3단계 과제 | ||
|
||
질문 1. webpack은 무엇이고 어떤 역할을 하고 있나요? -여러 개의 파일을 하나의 파일로 합쳐주는 번들러입니다. 여기서 번들러란 코드, 프로그램을 묶어서 패키지로 제공하는 것입니다. 하나의 시작점(index.js 등)으로부터 의존성을 가지는 모듈을 추적하여 하나의 결과물을 만들어내는 모듈 번들러 역할을 합니다. | ||
|
||
질문 2. 브라우저는 어떻게 JSX 파일을 읽을 수 있나요? -바벨과 같은 컴파일러를 이용하여 JSX를 자바스크립트 객체로 변환하면 읽을 수 있습니다. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
||
질문 3. React에서 상태 변화가 생겼을 때 어떻게 변화를 알아챌 수 있나요? -상태 정보를 가진 객체의 주소값이 변경되면 알 수 있습니다! | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 상태 변화를 알아채는 방법에 대한 적절한 설명이라고 할 수 있을까요~? React는 어떻게 상태가 변했음을 알 수 있을까요?? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 0c92c89 |
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.
여러 파일을 하나로 합치는 이유는 무엇일까요?
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.
현재 storybook이 정상적으로 실행되지 않는데요, 만약 효은님 환경에서는 정상적으로 동작하고 있다면 다음 순서에 따라 한 번 진행해보실래요?
위 순서대로 진행한 후, 만약 제대로 실행되지 않는다면 왜 이런 문제가 발생했을지 확인해 보시고 잘 동작하도록 수정해 보시면 좋겠어요!
제 컴퓨터에는 의존성을 삭제 후 재설치해도 잘 실행이 되어서 어떤 부분에서 그렇게 말씀하셨는지 잘 모르겠습니다!
저번에 PR 날리기 직전, 갑자기 절대경로가 인식이 안되어서 .storybook/main.ts에 webpackFinal를 추가하여 해결했는데, 이부분이 문제인 걸까요?
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.
만약 제가 Button 컴포넌트를 사용하려고 하는데, padding을 x방향으로 1000px만큼, y방향으로 1000px만큼 주고싶다면 어떡해야 할까요?
즉, 스타일 오버라이딩을 어떤 방식으로 제안하는 컴포넌트인가요?
emotion/react
의css props
로 스타일을 오버라이딩합니다! 예를 들면입니다. 사실 멘토님의 질문 의도를 제대로 파악하지 못하였는데, css props를 사용해서 재사용성을 어떻게 보장할 것인지 묻는 것일까요? 2주차 과제를 진행하면서 위 코드대로 했을 때, 컴포넌트 props에 css가 들어갈 수 없는 오류가 있었습니다. 그래서 열심히 찾아본 결과
@emotion/babel-preset-css-prop를 설치해보았는데,
import React from ‘react’ 와 같은 에러가 떠서 아래와 같이 시도했지만
결국 상단에 주석을 추가하는 방식으로 해결했습니다.. 이 방법밖에 없는 걸까요?
처음 시도해본 코드
//babel.config.js
결국
/* @jsxImportSource @emotion/react */
를 추가하는 방법으로 해결