반응형
- nvm을 사용하여 node의 latest 버전을 다운받아 설정하세요.
- 윈도우 기반으로 nvm-setup.exe 파일을 다운받은 후 cmd를 '관리자 모드'로 접속하여 node js의 최신 버전을 설치한다.
- 'nvm use [버전]' 명령어를 통해 사용 버전을 지정해 준 후 'node -v' 로 확인
- 윈도우의 경우, Node.js 공식 홈페이지의 LTS 버전을 직접 다운로드 받으면 환경 변수 때문에 nvm 설치 오류가 발생하는 경우가 있다. 그럴 때에는 설치되어 있는 node js를 다 지워주고 nvm을 먼저 설치한 후 cmd에서 node js를 설치해 주어야 한다.
2. yarn 을 설치하세요.
- Install Yarn 페이지를 참고해서 'npm install --global yarn' 명령어를 통해 설치한 후 'yarn -v'로 확인
3. yarn create react-app king-god-wink 명령어를 통해 프로젝트를 만들어보세요
- git bash를 사용하여 'npx create-react-app king-god-wink' 를 통해 king-god-wink라는 디렉터리 생성
- cd 명령어로 king-god-wink 디렉터리로 이동한 후 'yarn start' 명렁어를 통해 "http://localhost:3000/"에 접속
- 돌아가는 리액트 로고 확인
4. 코드 내부에 주석으로 되어있는 문제를 해결하세요.
- 아래에 content 라는 state를 useState 함수를 사용하여 선언하시오.
// 아래에 content 라는 state를 useState 함수를 사용하여 선언하시오.
// const ...
const [content, setContent] = useState('내용을 입력하세요');
const {bold, italic, color} = textStyle;
- content: 원소의 현재 상태 값 / setContent: 상태를 결정하는 Setter 함수
- useState 함수를 사용하여 content 라는 state를 선언, 이때 아무것도 입력하지 않았을 때 상태의 기본값을 "내용을 입력하세요"로 설정
- const {bold, italic, color} = textStyle; : 비 구조화 할당을 통해 값 추출
2. 아래 힌트를 참고하여 체크박스가 변할 때 마다 textStyle state 값이 변하도록 하시오.
const handleCheckbox = e => {
// 이 함수는 checkbox가 변하면 이벤트를 받아 처리해주는 함수이다.
// 아래 힌트를 참고하여 체크박스가 변할 때 마다 textStyle state 값이 변하도록 하시오.
// 브라우저에서 개발자 도구 - Console 에서 값을 확인할 수 있다.
const {name, checked} = e.target;
setTextStyle({
...textStyle,
[name]: checked
});
console.log(e.target.name, e.target.checked);
};
- handleCheckbox : 이벤트로부터 받아온 값을 textStyle 객체에 넣어줌
- const {name, checked} = e.target; -> e.target에서 name과 checked 를 추출
- 'setTextStyle'이라는 새로운 객체를 만듦
- ...textStyle -> 기존의 textStyle 객체를 전개 구문으로 펼친 후 /복사
- [name]: checked -> name 키를 가진 값을 checked로 설정
- *객체 수정 시에는 직접 수정하면 안되고 새로운 객체를 만들어서 그 객체를 변화하는 식으로 사용해야 함(불변성 보존)
- console.log를 통해 체크박스가 변할 때 마다 콘솔에 name과 checked(boolean)값이 표시됨
3. 아래 함수를 작성하여 input의 값이 변할 때, content state의 값이 변하도록 하시오.
// 아래 함수를 작성하여 input의 값이 변할 때, content state 값이 변하도록 하시오.
const handleInputText = e => {
setContent(e.target.value);
};
return (
<div style={{ padding: '20px' }}>
<input type="text" value={content} onChange={handleInputText} placeholder="내용을 입력하세요." /> <br />
- handleInputText에서 e라는 이벤트 객체를 파라미터로 받아옴
- e.target.value를 통해 input의 입력값을 받음
- onChange로 만들어 두었던 handleInputText 함수를 연결
- 상태가 바뀌었을 때 input 값의 내용을 업데이트 하기 위해 input 태그의 value 값을 content로 설정
4. 위에서 선언한 textStyle state 값을 props로 넘겨주도록 한 후 content state에 값이 없다면, "내용을 입력하세요."를 출력하고 값이 있다면 content state 값을 출력하시오.
{/* 아래 StyledH2 Component는 각각 bold, italic, color을 props로 받아 적용시킨다. */}
{/* 위에서 선언한 textStyle state 값을 props로 넘겨주도록 한다. */}
<StyledH2 bold={bold} italic={italic} color={color}>
{
// content state에 값이 없다면, '내용을 입력하세요.' 를 출력하고 값이 있다면 content state 값을 출력하시오.
content
}
</StyledH2>
- 위에서 선언한 textStyle state 객체에 저장된 boolean 값을 props로 넘겨받아옴 (조건문은 index.js에 이미 들어있음)
- {content}를 통해 입력된 값을 출력
5. 최종 결과!!!
6. 개인 브랜치에 commit & push
기억할 것!!! -> 리액트에서 객체를 업데이트 할 시, 기존 객체 직접 수정 XXX, 새로운 객체를 만들어서 변화줘야 함!!!
반응형
'WINK-(Web & App) > React.js 스터디' 카테고리의 다른 글
[2023 React.js 스터디] 이지원 #3주차 - 2장. 리액트 컴포넌트 스타일링하기(1~4) / 4장. API 연동하기 (1) (0) | 2023.02.26 |
---|---|
[2023 React.js 스터디] 유승우 #4주차 - React Router v6 (0) | 2023.02.26 |
[2023 React.js 스터디] 동승환 #2주차 - 1장. 리액트 입문(10-16) (1) | 2023.02.16 |
[2023 React.js 스터디] 임혜진 #2주차 - 즐거운 수강신청 사이트 만들기~ (1) | 2023.02.16 |
[2023 React.js 스터디] 조다운 # 1주차 - 1장. 리액트 입문(1-9) (0) | 2023.02.09 |