-
[2019.04.15] React의 개념 - state개발 블로깅/React 개념 2019. 4. 15. 18:44
내가 이해한 대로 적는 설명
state는 해당 컴포넌트가 가지고 있는 상태, 즉 데이터를 말한다. 각 컴포넌트들은 자신의 데이터들을 가지고 있을 수 있다.
(함수형의 컴포넌트는 state를 가지지 않는다! 오로지 class 방식만!)
# state를 선언하는 법
class Hello2 extends React.Component{ constructor(props){ super(props); this.state = { //여기에 Object 방식으로 state를 저장 name : 'inyong', age : 27 } } render = () => ( <div>Hello {this.props.todo}</div> ) }
constructor 생성자에서 state변수를 만든다. 그리고 그 안에 object 방식으로 데이터를 추가해주면 된다.(맞는지는 모르곘는데, 꼭 state라는 명칭으로 선언해야되는 것 같다.)
# state를 변경하는 법
class Hello2 extends React.Component{ constructor(props){ super(props); this.state = { name : 'inyong', age : 27 } } changeName = (NewName) => { this.setState({ name : NewName }) } addAge = () => { this.setState({ age : this.state.age + 1 }) } render = () => ( <div>Hello {this.props.todo}</div> ) }
클래스 안의 changeName, addAge 함수를 보자. this.setState라는 함수를 이용해서 데이터를 변경해준다. 원하는 state를 변경하고자 하면, 위 두 함수처럼 매개변수로 받고 this.setState함수를 이용하여 this.state를 바꿔주면 된다.
# onClick 설정하는 법
class Hello2 extends React.Component{ constructor(props){ super(props); this.state = { age : 27 } } addAge = () => { this.setState({ age : this.state.age + 1 }) } render = () => ( <div onClick={this.addAge}>Hello {this.props.todo}</div> ) }
<div> 태그를 보자. Hello2 클래스으이 addAge함수를 그냥 onClick으로 넣어줬다. addAge를 arrow function으로 지정해줬기 때문이다.
arrow function이 아닌, 일반 function으로 선언해주면 실행시킬 함수를 bind해서 넘겨줘야한다.
class Hello2 extends React.Component{ constructor(props){ super(props); this.state = { age : 27 } } addAge() { this.setState({ age : this.state.age + 1 }) } render = () => ( <div onClick={this.addAge.bind(this)}>Hello {this.props.todo}</div> ) }
반응형'개발 블로깅 > React 개념' 카테고리의 다른 글
[2019.08.11] Mobx-React 개념 및 사용법 1 (살짝 어려움 주의) (4) 2019.08.11 [2019.07.11] React + TypeScript + Webpack 환경 설정 (1) 2019.07.11 [2019.05.08] react-redux 사용하기 (매우 어려움 주의...) (3) 2019.05.08 [2019.04.15] React의 개념 - LifeCycle API (0) 2019.04.15 [2019.04.15] React의 개념 - props (0) 2019.04.15