
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
// Welcome 컴포넌트는 name이라는 props를 받아 화면에 텍스트를 출력한다.
-----------------------------------------------
function App() {
return (
<div>
<Welcome name="Alice" />
<Welcome name="Bob" />
</div>
);
}
// App 컴포넌트가 Welcome 컴포넌트를 두 번 호출하여 각각 다른 name 값을 전달하고 있는 상황
// 부모 컴포넌트가 자식 컴포넌트에게 데이터를 전달하는 방식으로 컴포넌트 간의 데이터 흐름을 구성할 수 있다.
장점
1. 독립적이기 때문에 여러 곳에서 재사용가능
2. 여러 컴포넌트를 조합해 큰 UI 제작가능
3.
const name = 'Alice';
const element = <h1>Hello, {name}!</h1>;
// JSX를 사용해서 name 변수의 값을 포함한 h1 태그를 생성한 코드
const element = React.createElement('h1', null, `Hello, ${name}!`);
---------------------------------------------------------------------
const user = { firstName: 'Alice', lastName: 'Johnson' };
const element = <h1>Hello, {user.firstName} {user.lastName}!</h1>;

<input /> 처럼 작성해야 한다.<input />처럼 작성해야 합니다.ES6, ES7, ES8 등 최신 자바스크립트 문법과 기능(예: 화살표 함수, let과 const, 비동기 함수 등)을 구형 자바스크립트로 변환하여, 다양한 브라우저에서 호환되도록 함.
리액트에서 사용하는 JSX 문법을 자바스크립트로 변환 JSX는 자바스크립트 코드 내에서 HTML과 유사한 구조를 작성할 수 있게 해주며, Babel은 이를 React.createElement 호출로 변환한다.
Babel은 다양한 플러그인과 프리셋을 통해 코드 변환 기능을 확장할 수 있다.


let count = 0
const count = 0
--------------------------------------
const [count,setCount] = useState(0)
// const [변수명, 변수바꿀함수] = 변수만들기(초기값)
let count = 0
const count = 0
--------------------------------------
const [count,setCount] = useState(0)
// setCount안에 바꿀 값을 넣어줘야한다. ex) setCount(5)
function Counter() {
const [count, setCount] = useState(0); // state 선언
const increment = () => {
setCount(count + 1); // state 변경
};
return (
<div>
<p>{count}</p> {/* state가 변경되면 값이 자동으로 업데이트 */}
<button onClick={increment}>Increment</button>
</div>
);
}
-state는 컴포넌트 내부에서 관리되는 동적인 데이터를 말하며, 해당 컴포넌트에서 직접 수정이 가능하다. 주로 사용자 상호작용이나 이벤트에 따라 값이 변경되며, 리액트는 state가 변경될 때마다 컴포넌트를 다시 렌더링하여 UI를 업데이트하는 장점이 있다.
function Greeting({ name }) { // props를 사용하여 데이터 받기
return <h1>Hello, {name}!</h1>;
}
function App() {
return <Greeting name="Alice" />; // props 전달
}
// App 컴포넌트는 Greeting 컴포넌트에 name이라는 props를 전달하고, Greeting은 이를 받아 화면에 표시한다.
props는 부모 컴포넌트에서 자식 컴포넌트로 전달되는 데이터다. 컴포넌트 간에 데이터를 전달할 때 사용하고 자식 컴포넌트는 props를 통해 전달된 데이터를 수정할 수 없다.
오직 읽기만 가능합니다.
쉽게 정리하면 이렇게 된다.
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
// 버튼을 클릭하면 상태가 변경되어 count 값이 증가한다.
// 리액트는 새로운 버추얼 DOM을 생성하고, 변경된 count 값에 따라 UI를 업데이트한다.