ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

 

React - 12. props
class TOC extends Component{
  render(){
    return(
      <ul>
        <li><a href="1.html">HTML</a></li>
        <li><a href="2.html">CSS</a></li>
        <li><a href="3.html">JavaScript</a></li>
      </ul>
    );
  }
}

- link ํƒœ๊ทธ์—๋Š” a๋ผ๋Š” ๊ฒƒ์„ ํ†ตํ•ด ์ด๊ฒƒ์ด ํƒœ๊ทธ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์คŒ

- ์ด๊ฒƒ์ด ์–ด๋–ค ์ฃผ์†Œ๋ž‘ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ์•Œ๋ ค์ค„ ํ•„์š”๊ฐ€ ์žˆ์Œ

- href="1.html" โžก ํƒœ๊ทธ์˜ ์†์„ฑ(attribute)๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ์Œ

 

<Subject title = "WEB" sub = "world wide web!"></Subject>

โžก ์œ„์ฒ˜๋Ÿผ title๊ณผ sub title์„ ํ†ตํ•ด์„œ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ?

 

class Subject extends Component {
  render(){
    return (
      <header>
          <h1>{this.props.title}</h1>
          {this.props.sub}
        </header>
    );
  }
}

class App extends Component {
  render() {
    return (
      <div className="App">
        <Subject title = "WEB" sub = "world wide web!"></Subject>
        <Subject title = "React" sub = "For UI"></Subject>
        <TOC></TOC>
        <Content>z</Content>
      </div>
    );
  }
}

- {this.props.title} ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

React - 13. React Developer Tools

 

- React Developer Tool ํฌ๋กฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜

- F12ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ณ  React ํƒญ์— ๋“ค์–ด๊ฐ€๋ฉด ์ด๋ ‡๊ฒŒ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ • ๊ฐ€๋Šฅ

 

React - 14. Component ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ

- ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ ๋ณ„๋„์˜ ํŒŒ์ผ ์ •๋ฆฌ

- component ๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ถ„๋ฅ˜ํ•  ์˜ˆ์ •

- TOC.js ํŒŒ์ผ ๋งŒ๋“ฌ

import { Component } from 'react';

- ํ•„์ˆ˜ ์ฝ”๋“œ

- ๋ฆฌ์•กํŠธ๋ผ๋Š” ๊ณณ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ

 

  export default TOC;

- ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

- ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ index.js์—์„œ ์ง€์›Œ๋„ ๊ฒฐ๊ณผ๋Š” ๋˜‘๊ฐ™์Œ

 

๋˜‘๊ฐ™์€ ๊ฒฐ๊ณผ~

React - 15.1. State ์†Œ๊ฐœ

์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ ์žฅ์น˜๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ๋“ค โžก ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค, ๋ฒ„ํŠผ ๋“ฑ๋“ฑ..

 

์ปดํฌ๋„ŒํŠธ์˜ ๋™์ž‘์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ 

โžก props

 

์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค์€?

โžก State

 

 

React - 15.2. State ์‚ฌ์šฉ
class App extends Component {
  render() {
    return (
      <div className="App">
        <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>
    );
  }
}

- App.js์˜ ์œ„ ๋ถ€๋ถ„ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๊ฒƒ

 

class App extends Component {
  constructor(props){
    super(props)
  }

- ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ render() ํ•จ์ˆ˜๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰์ด ๋˜๋ฉด์„œ component๋ฅผ ์ดˆ๊ธฐํ™”์‹œ์ผœ ์ค„ ๋•Œ ์œ„ ์ฝ”๋“œ ์‚ฌ์šฉ

class App extends Component {
  constructor(props){
    super(props)
    this.state = {
      subject:{title:'WEB', sub:'World Wide Web!'}
    }
  }
<Subject title = {this.state.subject.title} 
        sub = {this.state.subject.sub}></Subject>

- ์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ์ˆ˜์ •

- ์ € ์ฝ”๋“œ์—์„œ state ๊ฐ’์ด subject๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Œ โฌ… ๋‚ด๋ถ€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์—†์Œ

- ์™ธ๋ถ€์—์„œ ์•Œ ํ•„์š” ์—†๋Š” ์ •๋ณด๋ฅผ ์ฒ ์ €ํ•˜๊ฒŒ ์€๋‹‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

- ์ƒ์œ„ Component์˜ State ๊ฐ’์„ ํ•˜์œ„ Component์˜ props ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ ๊ฐ€๋Šฅ

 

React - 15.3. Key
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:'HTML is for design'},
        {id:3, title:'JavaScript', desc:'HTML is for interactive'}
      ]
    }
  }

- ์ฝ”๋“œ ์ˆ˜์ •

 

import { Component } from 'react';

class TOC extends Component{
    render(){
      var lists = [];
      var data = this.props.data
      var i = 0;
      while(i < data.length){
        // key ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
        lists.push(<li key = {data[i].id}><a href = {"/contents/" + data[i].id}> {data[i].title} </a></li>);
        i = i + 1;
      }
      return(
        <ul>
          {lists}
        </ul>
      );
    }
  }

  export default TOC;

- TOC.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:'HTML is for design'},
        {id:3, title:'JavaScript', desc:'HTML is for interactive'}
      ]
    }
  }

- App.js ํŒŒ์ผ

 

 

Comments