1
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 1 year has passed since last update.

React初学者のUdemy講座受講メモ(Reactとは編)

Last updated at Posted at 2022-12-05

Reactを勉強してみようと思い立ち、セールで安くなっていたUdemyの講座を受けてきました。
復習のため学んだ内容をまとめて書いていきます。
受講した講座はこちら 個人的にすごくおすすめです!

Reactとは

UI作成のためのJavaScriptライブラリ
コンポーネントという部品を組み合わせることで画面を作る
複雑な画面でも作りやすい!人気!!
スマホアプリ(ReactNative)、デスクトップアプリ(React+Electron)も作れる!

コンポーネントとは

画面の要素をReactで定義したもの、部品

良い点

  • 再利用性:つかいまわせる!
  • 可読性:1コンポーネント1機能なのでコードを追いやすい すっきり
  • 疎結合:結びつきが強くない、単体テストがしやすい

コンポーネントの定義方法

JSの関数として定義する、帰り値はJSX(HTMLみたいなやつ)、Babelの仕様で先頭を大文字にする必要がある

function Welcome () {
    return <h1>HelloWorld!</h1>;
}
// アロー関数で書くと簡潔でよい
const Welcome = () => <h1>HelloWorld!</h1>;

// 呼ぶときは
<Welcome />

コンポーネントの分割方法

別ファイルに分割する際のインポート、エクスポート方法

エクスポート方法1「NamedExport」

export { Welcome };
export { Welcome, Hello }; // 複数出力できる

// インポートするとき
import { Welcome, Hello } from "./component/Welcome";

エクスポート方法2「DefaultExport」

export default Example; // 複数渡せない→1ファイル1エクスポートになる

//これをインポートするときは以下のように書く
import Welcome from "./component/Welcome";
// 以下の様に名前を変えることができる
import Hello from "./component/Welcome";

Fragmentとは

無駄な<div>を使わなくても要素をまとめられる

<React.Fragment>
  <h3>Hello Component</h3>
  <h1>Hello Fragment;</h1>
</React.Fragment>

<React.Fragment>は描画時に無かったことになる
</React.Fragment><>の様に省略もできる

JSX内でJSコードを実行する

JSのは{}へ埋め込める

例えば以下の感じに

const test = "World";
return <h3>Hello {test} </h3>;

また、JSX記法も式として認識されるので以下の様にもかける

const jsx = <h1>JSX</h1>;
return <h3>Hello {jsx} </h3>;

式と文の違い

:何らかの値を返す、変数に代入できる
:変数の宣言、for文、if文など、セミコロン(;)で区切るもの

propsでコンポーネントに値を渡す

基本的にコンポーネントはpropsによってのみ出力結果を変えるようにする!

以下のようなコンポーネントを呼び出すとき

const Child = (props) => {
  return (
    <div className={`component ${props.color}`}>
      <h3>Hello Component</h3>
    </div>
  );
// 呼ぶときは以下のような感じ
<Child color="red" />

ほかにも様々な値を渡せる 以下は分割代入を用いている

const Child = ({ color, num }) => {
  return (
    <div className={`component ${color}`}>
      <h3>{`Hello Component ${num}`}</h3>
    </div>
  );
};
// 呼ぶときは以下のような感じ
<Child color="red" num={1} />

スプレッド演算子なんかもうまくつかえる

const o = {
  color: "red",
  num: 123,
};
<Child {...o} />

props.childrenとは

開始タグと終了タグの間、もしくは属性に定義する要素
コンポーネントを渡すことができる

開始タグと終了タグの間に記述した場合

<Container title="Childrenとは?">
  <Profile {...profile[0]} />
  <Profile {...profile[1]} />
</Container>

属性に定義した場合

<Container
  title="Childrenとは?"
  children={[<Profile {...profile[0]} />, <Profile {...profile[1]} />]}
/>

受け取る側

const Container = ({ title, children }) => {
  return (
    <div className="container">
      <h3>{title}</h3>
      {children}
    </div>
  );
};

propsの重要なルール

一方通行:親から子へわたすもの
読み取り専用:書き換えはエラーになる

JSXの正体

const elm = (<h1 className="fuga">Hello!</h1>);

バベルで↓のJSオブジェクトへ変換される

const elm = React.createElement("h1", {className:'fuga'}, "Hello!")

実行されると↓のReact要素になる

const elm = {
	type:'h1', 
	props:{
		className:'fuga',
		children:'Hello!'
	}
}

React要素をレンダーすることで画面に表示される

<div id="root"></div>
const elm = (<h1 className="fuga">Hello!</h1>);
const root = createRoot(document.getElementById("root"));

root.render(elm);

次回

Stete、状態管理について

1
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
1
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?