기본적인 dependency들이 숨겨져 있음
eject script를 통해 webpack, babel등 확인 가능
config는 webpack을 사용한다.
webpack dev 서버 이용해서 CRA가 내부적으로 우리가 소스 코드를 수정할 수 있게 도와준다.
localhost: IP (인터넷 네트워크상에서 가지고 있는 하나의 주소)
서버의 주소로 접속을해서 webpack dev 서버로부터 html을 받아오는것
import React from 'react';
import './App.css';
function Div (props: any) {
return (
<div>
div: {props.name1} <br />
{props.children}
</div>
);
}
function Span (props: any) {
return (
<span>
span: {props.name1} {props.name2}
</span>
);
}
function App() {
return (
<div className="App">
<Div name1="name1">
<Span name1="name1" name2="name2" /> 자동으로 props.children안에 들어가도록 지정
</Div>
</div>
);
}
export default App;
import React, { ReactNode } from 'react';
const Div= ({ children, name1 }: { name1: string, children?: ReactNode }) => {
~
}
import React from 'react';
import './App.css';
import Div from './Div';
import Span from './Span';
function App() {
return (
<div className="App">
<Div name1="name1">
<Span name1="name1" name2="name2" />
</Div>
</div>
);
}
export default App;
ex)
1. 예시 export default + obj;
import obj from './b';
const b = 1;
const c = 1;
export default {
b,
c,
};
import { b, c } from './b';
export const b = 1;
export const c = 1;
어떤 type을 사용할지 모르겠을때는 type error를 내보기
<div>
1번째 방법 jsx문법
<props.span1 />
<br />
2번째 방법 js
{props.span1()}
<br />
</div>
const Span = () => {
return (
<span>span renedred! </span>
import aFunc from './b';
aFunc();
aFunc.num; → 접근 불가능 (=scope)
aFunc.b; 이렇게 기재했을때 num, b와 같이 다른 파일에서 접근할 수 없다.
function a () {
let num;
function b () {
num = 5;
}
b ();
return num;
}
export default a;
reactNode에 무엇이 들어가고, reactElement는 어떻게 생성되는지 reactComponent는 reactElement를 만들어 내는 함수
jsx가 어떻게 컴파일 되어서 createElement라는 함수를 호출로 바꾸는지 알아보는 시간