FrontPage

目次

JavaScriptモジュールバンドラ

Vite

Node.js

npm

React

その他のフレームワークと特徴

フレームワーク特徴
AngularJSMVCに対応したフルスタックフレームワーク.パフォーマンス面でReactとVue.jsに負けている
Vue.jsUIに特化したフレームワーク.Reactと比較すると少しパフォーマンス面で劣っている
試してはいないググった情報

プロジェクトの作成と実行

# プロジェクトの作成
% npx create-react-app プロジェクト名

# (対象ディレクトリに移動して)Reactプロジェクトの実行
% npm start

初期状態

コンポーネント

関数コンポーネント
関数として定義
クラスコンポーネント
class構文で定義

JSX

式を埋め込む

const name = "John";
const element = <h1>Hello, {name}</h1>;

// 変数と文字列を結合した場合は`{...}`内で行う
// 属性値を指定する場合は`"{...}"`のように囲わない
const profile = <img src={'https://profile/' + name + '.jpg' />;

無視される値

条件分岐

if文

let elem = <p>Hello</p>;
if (!nameHidden) {
   elem = <p>Hello, {name}</p>
}

return (
   <h1>Welcome</h1>
   {elem}
);

即時関数

return (
   <h1>Welcome</h1>
   {(() => {
      if (nameHidden) {
         return <p>Hello</p>;
      }
      else {
         return <p>Hello, {name}</p>;
      }
   })()}
);

3項演算子

return (
   <h1>Welcome</h1>
   <p>Hello {nameHidden ? null : (', ' + name)}</p>
);

短絡評価

ルート要素

Props

App.js

export default function App() {
   return (
      <Label name="John" />
   );
}

Label.js

export default function Label(props) {
   return (
      <>
         <h1>Hello</h1>
         <p>{props.name}</p>
      </>
   );
}

分割代入

Label.js

export default function Label({ name = 'React' }) {
   ...
}

State

const [stateを格納する変数, stateの値を更新する関数] = useState(初期値)

Counter.js

import { useState } from 'react';

export default function Counter({ init }) {
   const [count, setCount] = useState(init);
   return (
      <>
         <p>{ count }</p>
         <button onClick={ () => setCount( c => c + 1 ) }>++</button>
      </>
   );
}

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS