1) git bash에서 프로젝트 디렉토리 만들기
2) 리액트 프로젝트 시작하고 프로젝트 이름 쓰기
3) 2의 작업이 끝나고 디렉토리 이동 후 서버 구동
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';//여까지 기본적인 import
import reportWebVitals from './reportWebVitals';
//강의에서는 registerServiceWorker로 나와있는데 아마 10이상 버전업이 되면서 차이가 나는듯 하다.
ReactDOM.render(
<React.StrictMode>//강의에선 strictMode가 없었는데 뭘까 공부 ㄱㄱ
<App />
</React.StrictMode>,
document.getElementById('root')//root ID를 가진 DOM을 불러와서 react Component (<App />)을 그리겠다는 뜻.
);
reportWebVitals();
!!콤포넌트 제작시 참고
<PhoneForm />
이런 식으로 작성해도 자동으로 드랍박스 형태의 import구문 로딩 가능1. App.js
import React, { Component } from 'react';
import PhoneForm from './components/PhoneForm.js';//DOM과 콤포넌트 구분 위해 components 폴더 새로 제작
class App extends Component {
render() {
return (
<div>
<PhoneForm />//이것만 써도 위의 import구문이 자동 참조된다.
</div>
);
}
}
export default App;
2. PhoneForm.js
import React, { Component } from 'react';
class PhoneForm extends Component {
state = {
name : '',
phone : '',
} //state 초기값 설정. 이후 setState함수를 이용해 value값대로 변경시켜줌.
handleChange = (e) => { //e는 event 파라미터임.!!
this.setState({ //handleChange함수가 아래 onChange이벤트에서 호출되는데,
onChange가 속한 각각의 name값이 this가 된다.
[e.target.name] : e.target.value//target은 input이 됨.
});
}
render() {
return (
<form>
<input
name = "name" //name이 이번에 처음 등장했는데, 느낌상으로는
js의 class 정도 되는거같다. 추가공부 필요
placeholder = "이름"
onChange = {this.handleChange} //onChange이벤트가 input에 추가됨.
//여기서 this는 input.(name)
value = {this.state.name} //input의 value값을 위의 onChange로 인해 변경되는 state값으로 변경
/>
<input
name = "phone"
placeholder = "전화번호"
onChange = {this.handleChange}
value = {this.state.phone}
/>//name input과 동일한 원리
<div>
{this.state.name} {this.state.phone} //입력되는 value값 출력
</div>
</form>
);
}
}
export default PhoneForm;