5
9

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 3 years have passed since last update.

React[基礎知識編]

Posted at

Reactとは

世界的に有名なJavaScriptのライブラリです。
Reactはサイトの見た目の部分を作ることができ、
Facebook、Airbnb、Dropboxなどの有名企業も多く使用しています。

##雛形


// Reactをimport
import React from 'react';

// React.Compornentを継承するクラスの定義
class アプリ名 extends React.Compornent {
 constructor(props) {
  super(props);
  this.state = {変数: }
 }

 イベント名() {

 }

// JSXを戻り値とするrenderメソッドを定義
  render() {
  return (
     この中でJSXを記述する
   )
  }
}

// クラスをexport
export default アプリ名;

##JSXとは
Reactで使うHTMLのことを言います。ほぼHTMLと同じですが呼び方が違います。

複数の要素がある場合には < div >タグを使う。


render() {
 return (
  <h1>見出し1</h1>
  <h2>見出し2</h2>
  // <img>タグには閉じタグ(/)が必要
  <img src = '----'/>
 )
}

##イベントの書き方
イベント名 = {() => { 処理 }} とすることでイベントを設定できます。


<button onClick = {() => { 処理 }}

##stateとは
ユーザーの動きに合わせて変わる値のことをいいます。
stateは、constructorの中で、オブジェクトとして定義します。
ここで定義したオブジェクトがstateの初期値となります。
その他の部分の、定型文として覚えておけば大丈夫です。


constructor(props) {
  super(props);
  this.state = {変数: }
}

###stateの表示
this.state.プロパティ名とすることで、指定したstateのプロパティ名に対応する値を取得できます。


constructor(props) {
  super(props);
  this.state = {name: '田中'}
 }
  render() {
  return (
     <h1>こんにちは、{this.state.name}さん!</h1>
   )
  }

###stateの変更
this.setState({プロパティ名: 変更する値})とすることで、指定されたプロパティに対応するstateの値が変更される。
Reactでは、「stateの値に直接代入することで値を変更してはいけない」という決まりがあります。
値を変更したい場合は、setStateを使いましょう。


<button onClick = {() => {this.setState({name: '佐藤'})}}>佐藤</button>

##コンポーネントとは
コンポーネントは「部品」や「パーツ」という意味です。
Reactでは、見た目を機能ごとにコンポーネント化して、コンポーネントを組み合わせることでWebサイトの見た目を作ります。
クラス名がコンポーネント名となり、下記の場合はLanguageがコンポーネント名となる。

Language.js

import React from 'react';

class Language extends React.Component {
  render() {
   return(
     JSXの記述
   );
}

##コンポーネントの表示
1.作成したコンポーネントをexportする

Language.js

export default Language;

2.App.jsで、コンポーネントをインポートし、JSX内に記述する。

App.js

import React from 'react';

// コンポーネントをインポート
import Language from './Language.js';

class Language extends React.Component {
  render() {
   return(
     // JSX内に<コンポーネント名 />を記述する
     <Language />
   );
}

##propsとは
propsは、「props名=値」という形で、コンポーネントを呼び出す箇所で渡します。
タグの中身は、改行してあげることで見やすくなります。
渡されたpropsは、this.propsで取得できます。
this.propsは{ props名: 値}というオブジェクトになります。


<Language
  prop = 
/>

###propsの取得
this.propsと書くことで{props名: 値}というオブジェクトを取得できるので、「this.props.props名」とすることでpropsの値を取得できます。


      <div className='language-item'>
        <div className='language-name'>{this.props.name}</div>
        <img 
          className='language-image' 
          src={this.props.image} 
        />
      </div>

##mapメソッドを利用する
mapメソッドで配列fruitListの各要素に対して順に処理を行い、各要素を < p >タグで囲んで表示しています。mapメソッドの戻り値はJSXなので、引数であるfruitItemは中括弧{}で囲むことに注意しましょう。


{languageList.map((languageItem) => {
  return (
    <Language
      name = {languageItem.name}
      image = {languageItem.image}
    />
  )
})}

##コンポーネントが表示される流れ
コンポーネント

↓jsx

App.js

↓jsx

index.js

↓html

index.html

#####index.jsの中身は以下の記述を記載する。

index.js
import App from './compornents/App';
ReactDOM.render(<App />,document.getElementById('root');

#####index.htmlの中身は以下の記述を記載する。


<div id = 'root'>
 // 指定したid名の要素の中に挿入される
</div>
5
9
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
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?