0
1

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(create-react-app)基礎学習覚え書き①

Last updated at Posted at 2020-11-24

##Reactの最大の利点はコンポーネントの使いまわしが可能なこと!!

基礎学習をしていて思ったのは編集の際に修正点が少ない。
CSSのSass(Scss)で変数にしたような感じに近いものを感じる。
はっきり理解できとらんが、備忘録として

##create-react-app内のディレクトリー
1.src:コンポーネントを作るJSファイル
2.public:htmlファイルや設定ファイル
3.build:本番環境用のファイル
※他のディレクトリ(node_modulesなど)は割愛

##実行コマンド
npm run build
srcとpublic内のファイルをバンドル(まとめて)buildディレクトリに出力

npm start
ローカルサーバーを起動してReactアプリを確認できる

npm run eject
babelやwebpackの設定を変更したい時に使用

##Atomicデザイン
※これは余談
パーツコンポーネント単位で定義していくUIデザイン手法で、端的にはパーツの最小単位からデザインしていくこと

##用語
state
・コンポーネントの"状態"を指す。Reactのコンポーネント内だけで使うものを「ローカルステート」と呼ぶ
※Reduxでは「グローバルステート」
・コンポーネント内で管理する変数
・propsを使用して親→子コンポーネントに渡せる

props
コンポーネント間でデータを受け渡すためのオブジェクト

##コンポーネントの種類
###Class Component

ClassComponent.jsx
import React from 'react';

class Hoge extends Rect.component {
    construtor(props) {
        super(props);
    }
    render() {
        return(
            <div>
                <h2>{this.props.hoge}</h2>
            </div>
        );
    }
}

クラスによって定義されたコンポーネント(見た目:複雑-記述量は増える)
(最近のReactではあまり使わないように記述する流れが多いらしい)
・関数ではないのでクラスとして宣言する
・React.Componentってやつを継承する
・stateってやつとライフサイクルをもつ
・propsってやつにはthisってやつが必要
・JSXはrenderメソッド内でreturnする

###Functional Component

FunctionalComponent.jsx
import React from 'react';

const Hoge = (props) => {
    return (
        <div>
            <h2>{props.hoge}</h2>
        </div>
    );
};

関数型で定義されたコンポーネント(見た目:シンプル-記述量は少ない)
・JSX(HTMLっぽい書き方のやつ)をreturnする
・ES6のアロー関数で記述
・stateってやつを持たない(stateless)
・propsってやつを引数に受け取る

##React.Fragment
JSX上でコンポーネントをラップする為だけに使われる
コンソールで確認した時にhtml上で無駄に<div></div>タグが多いときにつけるタグ
省略形として、ただの<>>でも良い

##props
Functional Componentでは
propsを引数に受け取り、受け取った引数をprops.hogeというように呼び出せる
Class Componentでは
1."constructor"で初期化しなければならない
2.{this.props.hoge}のように記述する必要がある

###propsで受け渡せるデータ型
1.{}内に記述 ※文字列のみ{}なしでも良い
2.文字列、数値、真偽、配列、オブジェクト変数

例文.
   title="HogeHoge"
   order={7}
   ispublished={true or false}
   builder={builderName}

##state
stateが必要なわけ
1.render内では値変更は禁止の為
2.setState()メソッドで値変更の管理をする為
3.レンダー内でのstate変更は再レンダー(無限ループ)のきっかけになる為
→だからsetStateを使いなさいよ

##stateの設定、取得、変更
###設定
・Classコンポーネントの使用が前提
・constructor()内で宣言
・オブジェクト型で記述

###取得
1.stateの取得は同一コンポーネント内で{this.state.hogeHoge}
で取得可能
2.子コンポーネントで参照したい場合はpropsとして渡す

###変更
1.関数にラップする
2.setState()内に記述されたstateのみを変更する為、他のstateに変更を与える心配はない

state例文.jsx
class Blog extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isPublished: false
    }
  }

  //公開状態の反転
  togglePublished = () => {
    this.setState({
      isPublished: !this.state.isPublished
    })
  };

  render() {
    return (
      <>
        <Article title={"React基礎"} isPublished={this.state.isPublished} toggle={() => this.togglePublished()}/>
      </>
    )
  }
}

export default Hoge

続きは②

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?