REACT

[생활코딩] state 소개

worri-pi 2022. 1. 31. 13:29

 

 

생활코딩 https://www.youtube.com/watch?v=rOpg2KUPW2M&t=29s

https://www.youtube.com/watch?v=e2c1EUcW7oo

 

 

 

 

App이라고 하는 Component에 Subject라고 하는 하위 Component가 있다.

하위 Component에 props의 값들이 하드코딩 되어 있다.

import React,{Component} from 'react';
import TOC from "./components/TOC";
import Content from './components/Content';
import Subject from './components/Subject';
import './App.css';

class App extends Component{
  render(){
    return(
      <div className="App">
      hello react!ffhs
      <Subject title="WEB" sub="world wide web!@"></Subject>
      <Subject title="React" sub="For UI"></Subject>
      
      <TOC></TOC>
      <Content title="HTML" desc="HTML is HyperText Markup language."></Content>
    </div>
    );
  }
}

export default App;

보기 싫으니 값들을 state로 만들고 그 state 값을 Subject의 props로 전달하는 것을 통해서 코드를 개선하자.

 

 

 

state 값을 초기화 시키려한다. 그 초기의 값으로 <Subject title="WEB" sub="world wide web!"></Subject> 이 값들을 세팅하려고 한다. 어떤 component가 실행될 때 render 함수보다 먼저 실행되면서 component 를 초기화시켜주고 싶은 코드는 constructor 안에 코드를 작성하면 된다.

즉, component를 실행될 때 constructor 라는 함수가 있다면 제일 먼저 실행되어 초기화를 담당한다. 

 

 

 

 

이제 초기화가 끝나면 this.state={}를 통해 state 값을 초기화 시킨다.

이 때, subject 값을 state화 시킬것이기 때문에 subject property 의 값으로 다시 객체를 준다.

constructor(props){
    super(props);
    this.state={
       subject:{title:'WEB',sub:'world wide web!!'
     }
}

 

이렇게 만든 state는 다양한 방법으로 사용할 수 있는데 오늘은 이 방법을 사용해보자.

<Subject
     title={this.state.subject.title}
     sub={this.state.subject.sub}>
</Subject>

 

 

App.js

import React,{Component} from 'react';
import TOC from "./components/TOC";
import Content from './components/Content';
import Subject from './components/Subject';
import './App.css';

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>
      <Subject title="React" sub="For UI"></Subject>
      
      <TOC></TOC>
      <Content title="HTML" desc="HTML is HyperText Markup language."></Content>
    </div>
    );
  }

}

export default App;

 

 

app.js를 사용하는 파일은 index.js 파일이다.

 

 

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);

reportWebVitals();

 

 

index.js 코드에 App 이라는 Component 를실행하는 코드가 있다.

이 코드를 보더라도 내부적으로 state 값이 subject 값이 있는지 없는지 알 수 없다.

 

728x90