React
리액트 안녕?바..반..가워..👀
: facebook에서 사용자 경험, 즉 interactive한 경험을 향상시키기 위해 개발된 라이브러리
이다.(x framework)
: 복잡한 웹 구현을 손쉽게 하기위해 반복적으로 사용되는 ui단위를 구현해 여러 자바스크립트 프레임워크나 라이브러리와 함께 사용할수 있다.
단지 인기있는 라이브러리 여서라기 보다, 많은 기업에서 사용되는 만큼, 맞추어 개발된 라이브러리도 다양하고, 신입 개발자의 관점에서도 쉽게 사용할 수 있도록 웹에 다른 라이브러리/프레임워크(vue/angular) 대비 월등한 정보량을 자랑한다.
하지만 vue.js 도 React와 Angular의 장점을 쏙쏙모아 급격히 성장하고 있다. 흥미로운 블로그글을 통해 자세히 알 수 있다.
우리가 만드려고 하는 웹페이지의 부분 부분이 'components'라고 볼 수 있다.
class Hello extends React.Component {
//아래 처럼아래 내용을 웹페이지에 넣어줘 라고 만들고
render() {
return <h1>Hello World</h1>;
}
}
-------------------------------------------------------------
ReactDOM.render(<Hello />, document.getElementById('root'));
//아래를 통해 아까 정한 hello component를 `,`뒤에 넣어줘 라고 사용하는 것이다!
<Hello />
같은 언어가 HTML과 비슷해서 헷갈릴수 있지만 React에서 사용하는 special Markup이라고 생각하면 된다.(리액트에서 사용하는 자바스크립트 확장문법JSX)
class Board extends React.Component {
renderSquare(squareValue) {
return (
<Square
value={squareValue}
/>
);
}
}
class Square extends React.Component {
//부모로부터 props.value를 받아서 재 사용할 수 있다
render () {
return (
<button>{props.value}</button>
);
}
}
더 자세한 내용은 다음 포스팅에서 다루도록 하겠다
props (short for properties) are a Component's configuration, its options if you may. They are received from above and immutable as far as the Component receiving them is concerned.
A Component cannot change its props, but it is responsible for putting together the props of its child Components.
The state starts with a default value when a Component mounts and then suffers from mutations in time (mostly generated from user events). It's a serializable* representation of one point in time—a snapshot.
A Component manages its own state internally, but—besides setting an initial state—has no business fiddling with the state of its children. You could say the state is private.
자세히 설명된 페이지를 추가한다. 사실 실제로 쓰기 전에는 개념을확실히 정리하기 힘들것 같아, 내일 세션 후에 좀더 나의 wording으로 정리할 까 한다.
출처 (https://github.com/uberVU/react-guide/blob/master/props-vs-state.md)
React의 공식 tool이며, 싱글페이지에 구현되는 화면 보여주는 프로그램이다.
-파일 하나하나가 패키지 모음이며, React 구동에 필요한 패키지를 포함한다.
-파일이 너무 크기때문에 실제로 node.modules 는 .gitignore에 포함되어 실제 깃허브에 push할때 포함되지 않는다.
dendencies
를 잘봐야함import React from 'react';react 패키지에서가져오고
import ReactDOM from 'react-dom';react dom 에서 가져오고
import './index.css'; , css 가져오기
import App from './App';
첫번째 인자 App components -html 구조에 render 시키고 싶은 구조
두번째 인자 위치가 들어간다.(id가 root)인곳
ReactDOM.render(
<App />
document.getElementById('root')
);b);실행시켜줌
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
}
<> </>
해줘도 됨(react fragment){ }중괄호
안에 넣어야 한다.<img />
, <input />