티스토리 뷰
반응형
React with Typescript 세미나 강의를 듣고 정리하며 공유한다.
React 에는
부모 컴포넌트로부터 데이터를 받을 수 있는 props와
component안에서 사용할 수 있는 state가 있다.
props와 state의 정의 및 특징
(출처: React with Typescript 세미나 강의)
다음은 props와 state 예제이다.
<!--props 데이터를 보내려면 이렇게 태그에 props name에 데이터를 전송해야 한다.-->
<App name="Markclear" company="Props"/>
// App tsx
// React typescript이기 때문에 Props인터페이스와 State를 만들어 줘야한다.
export interface Props {
name: string;
company?: string;
}
interface State {
age: number;
}
class App extends React.Component<Props, State> {
static defaultProps = {
company: 'Studio XID'. // 초기값을 이렇게 줬지만 App태그에서 props를 지정해줬기 때문에 사용 x
}
constructor(props: Props) {
super(props);
// state의 초기값을 지정 했으며 1초마다 1증가
this.state = {
age: 35
};
setInterval(() => {
this.setState({
age: this.state.age + 1
});
}, 2000);
// 밑의 _rollback() 메서드 호출
this._rollback = this._rollback.bind(this);
}
public render() {
return (
<div className="App">
// Markclear, Props 35(1씩증가)
{this.props.name}, {this.props.company} {this.state.age}
// _rollback 호출
<button onClick={this._rollback}>회춘<//button>
<StatelessComponent name="안냥"> 미나머로 <//StatelessComponent>
<//div>
);
}
private _rollback(): void{
this.setState({
age: 25
});
}
}
// React.SFC또한 리엑트 컴포넌트를 표현하는 방법. 다만 다른점은 React.SFC는 state를 사용하지 않고
// 컴포너트의 리턴 타입을 Props 타입과 함께 설정한다.
const StatelessComponent: React.SFC<Props> = ({name, company = "Home2", children}) => {
return (
<h2>{name},{company},{children}<//h2> // LifeCycle의 제한이 있다.
);
}
export default App;
결과화면
state를 관리하기 위해서는 예제나 강의에서 setState를 사용해야 한다고 한다.
하지만 이글 을 읽어보고 setState를 사용하는 대신에 mobX나 redux를 사용해야 하는 이유를 알면 도움이 될꺼같다.
그리고 redux와 mobx 는 둘다 데이터 관리 라이브러리, 하지만 이 글을 읽다보면 나처럼 타입스크립트를 사용하는 환경에서는 mobX를 사용하는 것을 추천한다.
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- data grid component
- Redux
- Angular
- JSON
- CSS
- MySQL
- react
- data component
- python3
- jQuery
- Spring Boot
- data table component
- Router
- data gird component
- JavaScript
- 페이스북 로그인
- 파이썬3
- Python
- Java
- Spring
- https://www.tistory.com/auth/logout/
- localStorage
- angular router
- data component module
- JPA
- React-router
- facebook login
- mobx
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함