// 오류 예시
function TestComponent(){
return(
< div>hello< /div>
< div>React< /div>
)
}
// 오류 대체 예시
function TestComponent(){
return(
<>
< div>hello< /div>
< div>React< /div>
</>
)
}
// span 클릭하면 h4도 클릭한 효과
< h4 onClick = {() => console.log('h4')}>
test
< span onClick = {()=>{console.log('span')}}> 😍 < /span>
< /h4>// 해결법
< h4 onClick = {() => console.log('h4')}>
test
< span onClick = {(e)=>{
e.stopPropagatioin();
console.log('span')
}}> 😍 < /span>
< /h4>
JavaScript의 문법을 그대로 사용
export default
// export.js
var name = 'kim';
export default name;
// import.js
import 임의의이름 from './export.js'
export 여러 변수
// export.js
var name = 'kim';
var age = 27;
export {name, age};
// import.js
import {name, age} from './export.js'
// 변수 이름 그대로 가져오기!!
// 바꾸고 싶다면? => as 사용
import {name as 이름, age as 나이} from './export.js'
export default + export 여러변수
// export.js
var name = 'kim';
var age = 27;
var gender = 'male';
export {name, age};
export default gender;
// import.js
import gender, {name, age} from './export.js'
// default는 이름 자유, 나머지는 그대로 가져오기
// default 값을 가장 먼저 써줘야 오류가 안난다!!
이처럼 import export를 통해 파일들을 번들링(Bundling) => 파일들을 묶듯이 연결
대표적인 번들러로는 웹팩, Parcel, browserify 등이 있음
react 프로젝트에서는 주로 웹팩 사용
=> create-react-app에서 기본적으로 설치해줌!!!
일반적으로 react 프로젝트에서는 index.js로 파일들을 불러와 번들링
Babel is a toolchain that is mainly used to convert ECMAScript 2015+ code into a backwards compatible version of JavaScript in current and older browsers or environments.
주로 호환성 등을 이유로 ES6 이후 코드를 이전 버전으로 변환시키는 툴
그 외에 대표적인 기능 중 하나가 JSX 코드를 브라우저가 이해하기 쉽도록 ES5로 변환시키는 역할
create-react-app에서 기본적으로 설치
let test : string = 'Yu'
function(num : number):void{}
- html태그를 변수에 담아보면 자동으로 JSX.Element 타입이 담겨있음을 확인할 수 있음
//직접 지정도 이렇게
let testBox : JSX.Element = < div >< /div >
function Profile(props : {name : string, age : number}:JSX.Element{
return(< div >{props.name}< /div >)
}
- 보통 초기값을 넣으면 타입이 자동으로 들어가긴 함
- 그래도 제한하고 싶은 경우가 있다면 generic 사용
let [user, setUser] = useState<string | number>('kim')