1
2

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を基礎から学ぶ①

Last updated at Posted at 2022-08-30

Reactとは

1. Composable コンポーネント指向

Reactはコードを細分化することができます。
従来のHTMLだとヘッダーからフッターまでコードを同じページに書くので、見通しが悪いです。
しかし、Reactでは下記のようにコンポーネントに分けて、それらを組み合わて使います。
コンポーネントに分けることによって、管理しやすくなり、様々な場所で再利用することができます。

<body>
    <Header />
    <Main />
    <Footer />
</body>

2. Decleartive 宣言型

Decleartiveとは、宣言型。
簡単にいうと、「どうやるかではなく、何をするか教えて!」 といった感じです

反対の意味でImperative(命令型)があります。
こちらは 「どうやるか一から教えてください!」 と手順を命令する必要があります。

宣言型のReact vs 命令型のVanilla JavaScriptを見てみます!
例としてブラウザに<h1 class="header">Hello World!</h1>を出力します。

React
ReactDom.render(<h1 className="header">Hello World!</h1>, document.getElementById('root'))

Vanilla JavaScriptで書き直すと、、

Vanilla JS
const h1 = document.createElement("h1");
h1.textContent = "Hello World!";
h1.className = "header";
document.getElementById("root").append(h1);

React(JSX)を使うことで、より短く直感的に書くことができますね。

JSX

次にReactを使う上で欠かせないJSXについてです。
JSXとは、JavaScript風のHTMLです。(と認識してます。)
JSXを使うことでHTMLのように直感的に書くことが可能になります。

JavaScript
const h1 = document.createElement("h1");
h1.textContent = "Hello";
h1.className = "header";
console.log(h1)
ReactDOM.render(element, document.getElementById("root"));

//コンソール出力結果: <h1 className="header">Hello</h1>
JSX
const element = <h1 className="header">This is jsx</h1>
console.log(element)
ReactDOM.render(element, document.getElementById("root"));

/* コンソール出力結果: JSオブジェクトを返す
{
...
props: {
    className: 'header', 
    children: 'This is jsx'
 }
ref: null
type: "h1"
_owner: null
_store: {validated: false}
...
}
*/
1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?