LoginSignup
0
1

More than 5 years have passed since last update.

Reactを触ってみる。propsとstateのサンプルコード

Posted at

Reactを触ってみる

興味本位でReactを触ってみようと思ったので、
Reactについてのメモ書きです。

propsの利用について

App.js
import React from 'react';

const App = () => {
  return (
    <div>
      <User name={"Taro"} age={10}/>
      <User name={"Hanako"} age={20}/>
    </div>
  )
}

const User = (taro) => {
  return <div>Hi! I am {taro.name}, and {taro.age} years old!</div>
}

export default App;

上記のコードを実行すると、ブラウザ上で以下のように表示されます。

Hi! I am Taro, and 10 years old!
Hi! I am Hanako, and 20 years old!

defaultProps

propsに初期値を設定します。
例えば以下のように配列を使って表示させる場合に、defaultpropsを利用することができます。

App.js
import React from 'react';

const App = () => {
  const profiles = [
    { name: "Taro", age: 10 },
    { name: "Hanako", age: 20},
    { name: "guest" }
  ]
  return (
    <div>
      {
        profiles.map((profile, index) => {
          return <User name= {profile.name} age= {profile.age} key={index} />
        })
      }
    </div>
  )
}

const User = (user) => {
  return <div>Hi! I am {user.name}, and {user.age} years old!</div>
}

User.defaultProps = {
  age: 0 
}

export default App;

ブラウザ上では以下のように表示される。

Hi! I am Taro, and 10 years old!
Hi! I am Hanako, and 20 years old!
Hi! I am guest, and 0 years old!

コード上ではageのところを定義しなかったが、コード下部のUser.defaultProprで
ageの初期値を定義しているため、guestさんの年齢が0歳に設定された。

stateについて

直訳どおり、状態のこと。
以下のようなカウント画面を作成し、+1ボタンを連打すると、stateの状態が更新され続けます。

App.js
import React, { Component } from 'react';

const App = () => (<Counter></Counter>) 

class Counter extends Component {
  constructor(props) {
    super(props)
    this.state = { count:0 }
  }

  clickPlusButton = () => {
    this.setState( { count: this.state.count + 1 })
  }

  render() {
    return (
      <React.Fragment>
        <div>count: { this.state.count }</div>
        <button onClick={this.clickPlusButton}>+1</button>
      </React.Fragment>

    )
  }
}

export default App;

stateの状態はChromeの拡張機能のReact Developer Toolなどで確認することができます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1