14
11

Vue.jsとReactの書き方の違い

Last updated at Posted at 2024-08-30

コンポーネントの定義

Vue.js
<template>
  <div>
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello Vue!'
    }
  }
}
</script>

<style>
/* スタイルをここに記述 */
</style>

Vueでは、コンポーネントをtemplate, script, styleの3つのセクションに分けて定義する。
テンプレート部分でHTMLに似た構文を使用し、スクリプト部分でロジックを定義する。

React
import { useState } from 'react'

const Component = () => {
  const [text, setText] = useState('')
  return (
    <div>
      <p className="text">{text}</p>
    </div>
  )
}
export default Component

Reactでは、コンポーネントは基本的に関数またはクラスとして定義される。
JSX(JavaScript XML)を使用して、HTMLに似た記述をJavaScript内で行う。

データの管理

Vue.js
<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="updateMessage">Update</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello Vue!'
    }
  },
  methods: {
    updateMessage() {
      this.message = 'Message Updated';
    }
  }
}
</script>

Vueでは、データはdataオプション内で定義され、テンプレート内で{{ }}を使用してバインドされる。データの変更は、通常メソッド内で直接行う。

React
import React, { useState } from 'react';

function MyComponent() {
  const [message, setMessage] = useState('Hello, React!');

  return (
    <div>
      <h1>{message}</h1>
      <button onClick={() => setMessage('Message Updated')}>Update</button>
    </div>
  );
}

Reactでは、状態(State)はuseStateフックを使って管理する。
状態の変更は、setStateまたはuseStateから返される関数を使用して行う。

イベントのハンドリング

Vue.js
<button @click="handleClick">Click me</button>

Vueでは、イベントハンドラーは@を使って指定する。
例えば、@clickがonClickに相当する。

React
<button onClick={handleClick}>Click me</button>

Reactでは、イベントハンドラーはキャメルケースで指定し、onClickやonChangeなどの属性で指定する。

コンポーネント間の通信

Reactでは、親から子へのデータの受け渡しはpropsを使用し、子から親への通信にはコールバック関数を渡すことが一般的である。
Vueでもpropsを使って親から子へデータを渡す。
子から親への通信には$emitを使用してカスタムイベントを発火させる。

14
11
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
14
11