react 勉強メモ 1日目

why jsx?

jsxがなかったら...
全て React.createElement()でDOMを作らなければならない

npm run build で jsxファイルをjsのファイルにトランスパイルして一つにまとめる(バンドルする)

書き方

App.js

import "./styles.css";
export default function App() {
 return (
   <div className="App">
     <h1>Hello CodeSandbox</h1>
     <h2>Start editing to see some magic happen!</h2>
   </div>
 );
}

index.js

import { render } from "react-dom";
import App from "./App";
const rootElement = document.getElementById("root");
render(<App />, rootElement);

render(DOM, 描画対象のroot);

みたいなイメージでOK

Functional Component

- ESアロー関数

- stateを持たない

- propsを引数に

- jsxをreturnする

Class Component

- React.Componentを継承

- ライフサイクルやstateをもつ

- prpsにはこのクラスの中での宣言であることを示すためthisが必要

- renderメソッド内で Jsxをreturnする

※ 最近のreactはなるべく使わないケースが多い(なるべくcomponentにstateを持たせたくないのでできるだけ Functional Componentを使う)

環境構築

create-react-appは記事とか読みながらなら10minくらいでさくっと終わるので省略

state

render()内では値を変更してはならない

stateの変化をきっかけに再renderするので無限ループになってしまう

setState()で値を変更する

stateを使えばページリロードなしで表示を切り替えることができる

stateの設定方法

constructorで設定

  // 公開状態を反転させる関数
 togglePublished = () => {
   this.setState({
     isPublished: !this.state.isPublished
   });
 };

無限にrenderされるのを防ぐために関数型で呼び出す

onClick={() => this.togglePublished()}

ライフサイクル

コンポーネントの「時間の流れ」

- Mounting: 生まれる瞬間

- Updating: 成長する期間

- Unmounting: 死ぬ期間

Why ライフサイクル?

関数の外に影響を与える関数を記述するため

- DOM変更

- API通信

- ログ出力

- setState()

副作用 = 適切な場所に配置すべき処理


いいなと思ったら応援しよう!