React 속성값 타입 및 디폴트값 정의하기
07 Aug 2020 | react에듀캐스트 장고&리액트 강의를 듣고 정리하는 글이다.
각 속성값에 대한 타입 명시 필 필수 여부를 지정하여 생산성을 올린다.
- TypeScript를 사용해서 지정할 수 있다.
- prop-types 패키지를 통해 속성값에 타입을 지정할 수 있다.
- yarn add prop-types
에듀캐스트 장고&리액트 강의를 듣고 정리하는 글이다.
에듀캐스트 장고&리액트 강의를 듣고 정리하는 글이다.
import React from 'react';
class Counter extends React.Component {
state = {
counter: 0,
};
onClick = () => {
this.state.counter += 1; // 이렇게 쓰지 말자. 모든 상탯값/속성값은 불변값으로 처리되어야 한다.
const counter = this.state.counter + 1;
this.setState({ counter });
}
render(){
const { counter } = this.state;
return (
<p onClick={this.onClick}>
Counter : {counter}
</p>
)
}
}
클래스형 컴포넌트에서는 this.state 객체를 통해 상탯값 접근(getter)과 this.setState 함수를 통해 상탯값을 변경(setter)해준다.
ReactComponent.setState(
객체 또는 함수,
처리가 끝났을 때 호출되는 콜백 함수
)
비동기로 동작 변경할 특정 state값들이 담긴 object를 지정하거나, 함수를 지정 가능 -> 매개변수를 호출되기 직전 상태값을 받는다. (추천)
// 2씩 증가할거 같지만, 비동기 동작이기에 count 값은 1만 증가한다.
onClick1 = () => {
this.setState({count: this.state.count + 1})
this.setState({count: this.state.count + 1})
}
// 직전 상태값을 받아와 처리
onClick2 = () => {
this.setState(prevState => ({count: prevState.count + 1}));
this.setState(prevState => ({count: prevState.count + 1}));
}
컴포넌트 생성 시에 넘겨지는 값의 목록
값 지정 시에 중괄호를 통해 다양한 타입의 값 및 표현식 지정 가능
```
에듀캐스트 장고&리액트 강의를 듣고 정리하는 글이다.
UI 라이브러리 (웹 프론트엔드 및 앱 Native, VR등에서 활용) UI데이터를 관리하는 방법을 제공
UI데이터(UI에 연결된 속성값/상탯값)가 변경되면, 해당 컴포넌트의 render()함수가 호출이 되어 화면을 자동으로 갱신
UI에 변화를 가할 때마다 일일이 코드를 수행하는 것이 아니라, 데이터 (속성값/상탯값)에 맞춰 뵤여질 UI를 미리 선언해두면, 데이터가 변경되면 그 즉시 데이터에 맞춰 UI가 그려진다.
카운터 컴포넌트 (클래스)
class Counter1 extends React.Component {
state = {
value: this.props.initialValue,
};
onClick = () => {
const { value } = this.state;
this.setState({ value: value + 1 });
};
render() {
const { value } = this.state; // 현재의 상탯값을 참조
return (
<div>
Counter1: {value}
<Button onClick={this.onClick}>+1</Button>
</div>
); // jsx 문법
}
}
function App() {
return (
<div>
<Counter1 initialValue={10} />
<Counter1 initialValue={10} />
<Counter1 initialValue={10} />
</div>
);
}
화면을 담당하며, React 앱의 가장 작은 단위
// jsx 문법
const reactElement1 = <h1>Hello, React!</h1>;
// js 문법
const reactElement2 = React.createElement('h1', null, 'Hello, React!');
Component를 통해 UI를 재사용 가능한 개별적인 여러 조각으로 나눈다.
함수도 첫글자는 대문자로 표기해주자. 안그러면 인식을 못하는 경우가 발생한다 한다.
// 클래스형
class Person1 extends React.Component {
render() {
return (
<div>
Person: {this.props.name}
</div>
)
}
}
// 함수형
function Person2(props){
return (
<div>
Person: {this.props.name}
</div>
)
}
에듀캐스트 장고&리액트 강의를 듣고 정리하는 글이다.
알리바바 그룹에서 개발한 UI 프레임워크
사용하기
@import ~"antd/dist/antd.css"
;import React from 'react';
import { Button } from 'antd';
import 'App.css';
function App() {
return (
<div>
<button>Hello, React</button>
<Button type="primary">Hello, Antd.</Button>
</div>
);
}
export default App;
에듀캐스트 장고&리액트 강의를 듣고 정리하는 글이다.
babel-preset-es20152015: ES6 babel-preset-es20152016: ES7 babel-preset-es20152017: ES8 babel-preset-env
javascript, jsx, css, sass, less, es6, 이미지, HTML, 폰트 등 거의 모든 것이 모듈이 될 수 있으며, 하나의 파일(bundle)로 묶을 수 있다. 모듈성과 네트워크 성능 향상할 수 있다.
특징
지원 Loaders
유틸리티 설치 npm install –global yarn yarn global add webpack webpack-cli
개발 시에 필요한 라이브러리 설치 yarn add –dev @babel/core babel-loader @babel/preset-env @babel/preset-react
프로덕션에서 필요한 라이브러리 설치 yarn add react react-dom