Agile育成ブログ
未来を変える喜びを
React

React(Component)


Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490

Reactのプログラムにおいてコンポーネントは非常に重要な役割を担っています。
コンポーネントは表示の内容や必要なデータ、処理などを一つのオブジェクトにまとめたものです。

コンポーネントの書き方
function コンポーネント名 (引数){
    return       ;
}

コンポーネントは<コンポーネント名/>と記述することで利用することができます。
これにより、タグの部分に関数でreturnしたエレメントがはめ込まれる。

下記のコードにおいてReactはプロジェクトの中に組み込まれているのでReactのCDNは読み込む必要がありません。

コンポーネントの違い

前まではクラスコンポーネント (Class Component) じゃないとStateやライフサイクルが扱えなかったのですがReact Hooksが登場したことにより関数コンポーネントでも同じような機能が使えるようになりました。

関数コンポーネント (Functional Component)

import React from 'react';

const Button = (props) => {
  return <button>Say, {props.hello}</button>;
};

export default Button;

クラスコンポーネント (Class Component)

import React, {Component} from 'react';

class Button extends Component {
  render() {
    return <button>Say, {this.props.hello}</button>
  }
}

export default Button;

関数コンポーネント

https://www.agile-software.site/2021/08/08/react-hooks-2/
  function Welcome(props) {
    return <div className="alert alert-primary">
      <p className="h4">Hello React!!</p>
    </div>
  }

作成したWelcomeコンポーネントを埋め込んでいます。

  let el = (
    <div>
      <h5 class="mb-4">{message}</h5>
      <Welcome />
    </div>
  )
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>React</title>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" crossorigin="anonymous">
  <script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>

<body>
  <h1 class="bg-primary text-white display-4">React</h1>  
  <div class="container mt-4">
    <div id="root">wait...</div>
  </div>
  <script type="text/babel">
  let dom = document.querySelector('#root')
  let message ="React component page."

  // これが関数コンポーネント
  function Welcome(props) {
    return <div className="alert alert-primary">
      <p className="h4">Hello React!!</p>
    </div>
  }

  // 表示するJSX
  let el = (
    <div>
      <h5 class="mb-4">{message}</h5>
      <Welcome />
    </div>
  )
  ReactDOM.render(el, dom)  
  </script>
</body>

</html>

コンポーネントは必ず大文字で始まる名前でなければなりません。

クラスコンポーネント

class クラス名 extends 継承するクラス {・・・}

Reactにはコンポーネントの機能を一通りそろえた「React.Components」というクラスがある。

class コンポーネント名 extends React.Component{
}

親コンポーネントと子コンポーネント

親コンポーネントでimportできるように子コンポーネントでexportする必要があります。

exportとimport

componentフォルダにあるArticleを

const Article = (props) => {
  return (
    <div>
      <h2>{props.title}</h2>
      <p>{props.content}</p>
  );
};
export default Article;
import Article from "./components/Article";

function App() {
  return (
    <Article
      title={}
      content={}
    />
  );
}

You cannot copy content of this page