React JS는 바로 interactivity를 위하여 제작되었다!
interactive한 어플리케이션에서 하는 작업들 전부 event들을 감지(listen)하는 일이기 때문
-노마드 코더 리액트 강의 메모-
React JS는 자바스크립트로 작성한 element를 업데이트 해서 HTML로 번역한다.
= React JS가 결과물인 HTML을 업데이트 할 수 있다.
= 즉, "유저에게 보여질 내용을 컨트롤할 수 있다" 이것이 바로 React JS의 핵심!
바닐라 JS에서는

리액트 JS에서는
모든 것이 자바 스크립트에서 시작 → 그 다음에 HTML이 된다.



<body>
<div id="root"></div> //ReactDOM이 React element들을 가져다놓을 곳
</body>
<script>
const root=document.getElementById("root"); // root div를 grab
const span = React.creatElement( "span", { props }, "Hello I'm a span" )
// root 안에 들어갈 이벤트 컨텐츠
// HTML 태그
React.Dom.render(span, root);
// render하여 (React element들을 root div 안에서) 유저에게 보여준다
</script>
사람들이 더 이상 React.createElement 쓰지 않는 이유! (+Babel 필요함)


Bable로 다시 번역해주기

React.CreateElement 렌더링도 JSX 방식으로 바꿔보자 (일반적인 HTML 태그인 것처럼 포함시켜주기)
<script>
// div 태그를 렌더링하는 컴포넌트 (Title, Button 관련 코드 포함한)
const container = React.CreateElement("div", null, [Title, Button] );
ReactDom.render( container, root );
</script>
↓↓↓↓ 위를 아래처럼 바꿔주기 ↓↓↓↓

초기 렌더링 이후,
사용자에게 업데이트된 정보를 보여주려면 리렌더링 해야함
But 카운터 값이 12345.. 증가할 때마다 직접 리렌더링을? → useState! (자동 리렌더링)
modifier함수로 count 데이터를 업데이트 후
↓
컴포넌트 전체를 재생성(리렌더링)해 화면에 노출
const [counter, modifier] = React.useState( );
const [ 현재값 , 함수 ] = React.useState(0 //초기값 0);
└>현재 value를 수정(modify)하고 컴포넌트를 새로고침한다

부모 컴포넌트(App)로부터 자식 컴포넌트(count) 함수에게
↓
'인자'를 통해 데이터를 보내는 방법
*컴포넌트 = JSX를 리턴하는 함수
props가 변경되지 않은 컴포넌트는 다시 리렌더링 되지 않도록 지정
어떤 타입의 props를 받고 있는지 체크해줌

React JS의 작동방법 = "state를 변화시킬 때 컴포넌트(모든 코드)를 재실행시킨다"
useEffects( 실행시킬 코드 , [dependency] );
