0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[React]JSX, props, stateについて

Last updated at Posted at 2020-05-19

はじめに

Reactに今まで全く触れてこなかったのですが、元々興味があったため最近になって少し勉強をし始めました。
その中で、新しい内容や概念が多く登場したため簡単に調べた内容を簡単にまとめてみます。
自分がプログラミングに触れてから時間も浅いため、この内容も初学者向けのものになります。

React.jsとは

Facebook社が公開している,UIのパーツ(構成部品)を作るためのライブラリです。

React.jsの特徴

  • UIの機能追加に特化しており、ユーザーが使いやすいUIを作りやすくしてくれる
  • 効率よく処理を行い、できるだけユーザーが操作にストレスを感じないように高速で動作する
  • コンポーネント指向 (UIを部品化して管理を行いやすくし、再利用をしやすくする設計手法の1つ)

JSX

JavaScript XMLの略で、JavaScriptを拡張した言語です。
テンプレート言語の一つになります。

JSXの特徴

  • HTML風に書けるため可読性が高い
  • HTMLのタグが使える
  • JSXTransfomerが自動でコンパイルをしてくれる

実際にAppクラスを定義してその中に、JSXで画面にHello world.と表示するコードを書いてみます。

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

class App extends Component {
  render() {
    return <h1>Hello world.</h1>;
  }
}

export default App;

このように直感的に書くことができることがメリットとなります。
JSXでの記述だけを見ると、1行目のimport React, { Component } from 'react';は必要無いようにも思えますが、JSXで記述したものはwebpackコマンド実行時に内部的にbabelが呼ばれて、以下のように変換されることにより一般的なWebブラウザでも解釈できるJavaScript構文へと変換されています。

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

class App extends Component {
  render() {
    return React.createElement (
      "h1",
      null,
      "Hello world."
    );
  }
}

export default App;

そのため、JSXを使用するためには1行目の記述が必要になります。

Component(コンポーネント)

  • クラスコンポーネント
  • ファンクショナルコンポーネント(関数コンポーネント)

の2種類があります。

props

コンポーネントのプロパティのことです。
親コンポーネントから子コンポーネントへの受け渡しが出来るが、受け取ったpropsの変更や更新は出来ません。
なお、関数の受け渡しも可能です

propsの参照

this.props

defaultProps

propsのデフォルト値を設定できます。

propTypes

propsのバリデーションです。

Test.js
// 型のチェック
Hoge.propTypes = { num: PropTypes.number }

//型と値の有無のチェック
Hoge.propTypes = { num: PropTypes.isRequired.number }

state

コンポート内部の状態のことであり、コンポーネント内で使用できる値です。
値が変更される度にrenderが走ります。
propsと似ているようで違います。

propsとの違い

  • 使用箇所
    • props: 親コンポーネントから子コンポーネントへ受け渡してが可能
    • state: そのコンポーネント内部でのみ使用可能
  • 変更、更新
    • props: 不可
    • state; 可

stateの参照

this.state

初期値の設定

constructorメソッドを使用します。
なお、constructorメソッドにはpropsを渡すことができます。

Test.js
constructor(props) {
  super(props);
  this.state={
      hoge: 0,
  };
}

値の更新

setStateメソッドを使用します。

Test.js
this.setState({hoge: 1});

setStateメソッドを使用して更新するとレンダリングがされるのですが、以下の方法ではレンダリングがされないため非推奨となっています。

Test.js
this.state.hoge = 1;

おわり

今回はReact.jsで必須となる知識について自分のアウトプットも兼ねて書きました。
最後まで見ていただき、ありがとうございました。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?