본문 바로가기
웹서비스 개발/React-App 개발

State 개발

by 후닝훈 2021. 4. 26.
반응형

State

제품을 조작하는 입장과 구현자의 입장이 있다.

Props : 부모 컴포넌트가 자식 컴포넌트에게 주는 값. 읽기 전용

State : 컴포넌트 내부에서 선언하며 내부에서 값 변경을 가능.  컴포넌트 내부적으로 사용하는 정보.

         예를들면 제품의 전선 등 밖에서 보여서 안되는 물건을 뜻한다.

 

첫번째로 어떠한 컴포넌트가 실행 될 때 render 함수보다 먼저 실행되면서 컴포넌트를 초기화 시켜주고 싶은 코드는 

  constructor(props){
    super(props);
    
  }

 해당하는 코드블럭 안에 작성한다.

App.js의 state로 선언된것을 하위 props에서 불러오는것은 아래 코드처럼 가능하다.

class App extends Component {
  constructor(props){
    super(props);
    this.state = {
      subject:{title:'WEB', sub : 'World Wide Web'}
    }
  }
  render() {
    return (
      <div className="App">
        <Subject
          title = {this.state.subject.title}
          sub= {this.state.subject.sub}></Subject>
        <TOC></TOC>
        <Content></Content>
      </div>
    );
  }
}

 

Key

App.js

class App extends Component {
  constructor(props){
    super(props);
    this.state = {
      subject:{title:'WEB', sub : 'World Wide Web'},
      contents:[
        {id:1, title:'HTML', desc: 'HTML is for information'},
        {id:2, title:'CSS', desc: 'CSS is for design'},
        {id:3, title:'JavaScript', desc: 'JS is for interactive'}
      ]
    }
  }
  render() {
    return (
      <div className="App">
        <Subject
          title = {this.state.subject.title}
          sub= {this.state.subject.sub}></Subject>
        <TOC data={this.state.contents}></TOC>
        <Content></Content>
      </div>
    );
  }
}

export default App;

 

TOC.js

class TOC extends Component {
    render(){
      var lists = [];
      var data = this.props.data;
      var i = 0;
      while (i<data.length){
        lists.push(<li key = {data[i].id}><a href={"/content/"+data[i].id}>{data[i].title}</a></li>);
        i=i+1;
      }
      return(
        <nav>
          <ul>
            {lists}
          </ul>
        </nav>
      )
    }
  }

  export default TOC;
반응형

'웹서비스 개발 > React-App 개발' 카테고리의 다른 글

Event 2. Bind & setState  (0) 2021.04.30
Event  (0) 2021.04.27
Component를 파일로 분리하기  (0) 2021.04.25
Props & React Developer Tools  (0) 2021.04.24
Component 작성  (0) 2021.04.24

댓글