Vue.js をはじめるにあたっての覚書き

著者画像
Toshihiko Arai

コンポーネント間で値を渡す(親から子へ)

Vue.js では props を使用して、親コンポーネントから子コンポーネントにデータを渡すことができます。

ParentComponent.vue

<!-- 親コンポーネント -->
<template>
  <ChildComponent :message="parentMessage" />
</template>

<script setup>
import ChildComponent from './ChildComponent.vue';
import { ref } from 'vue';

const parentMessage = ref('こんにちは、子コンポーネント!');
</script>

ChildComponent.vue

<!-- 子コンポーネント -->
<template>
  <p>{{ message }}</p>
</template>

<script setup>
defineProps({ message: String });
</script>

コンポーネント間で値を渡す(子から親へ)

子コンポーネントから親コンポーネントへデータを渡すには emit を使用します。

ParentComponent.vue

<!-- 親コンポーネント -->
<template>
  <ChildComponent @update-message="updateMessage" />
  <p>子からのメッセージ: {{ receivedMessage }}</p>
</template>

<script setup>
import ChildComponent from './ChildComponent.vue';
import { ref } from 'vue';

const receivedMessage = ref('');

const updateMessage = (newMessage) => {
  receivedMessage.value = newMessage;
};
</script>

ChildComponent.vue

<!-- 子コンポーネント -->
<template>
  <button @click="sendMessage">メッセージを送る</button>
</template>

<script setup>
import { defineEmits } from 'vue';

const emit = defineEmits(['update-message']);

const sendMessage = () => {
  emit('update-message', '子コンポーネントからのメッセージ');
};
</script>

ref の使いどころ

ref は Vue 3 のリアクティブなデータ管理の基本的な方法です。ref を使用すると、変数をリアクティブにし、その値の変更を Vue が検知できるようになります。

<template>
  <p>{{ count }}</p>
  <button @click="increment">カウントアップ</button>
</template>

<script setup>
import { ref } from 'vue';

const count = ref(0);

const increment = () => {
  count.value++;
};
</script>

refreactivecomputed の使い分け

種類 使いどころ
ref シンプルな変数(数値、文字列、真偽値) const count = ref(0);
reactive オブジェクトや配列 const user = reactive({ name: '太郎', age: 30 });
computed 依存関係がある値の計算 const totalPrice = computed(() => price.value * quantity.value);

reactive の使いどころ

<script setup>
import { reactive } from 'vue';

const user = reactive({ name: '太郎', age: 30 });

const incrementAge = () => {
  user.age++;
};
</script>

user のプロパティは .value を使わずに user.age++ のように変更可能。

computed の使いどころ

<script setup>
import { ref, computed } from 'vue';

const price = ref(100);
const quantity = ref(2);

const totalPrice = computed(() => price.value * quantity.value);
</script>

テストサーバーをLAN内からアクセスを許可する(Vue.js)

LAN内のデバイスからテストサーバーへアクセスするためには、vite.config.jshost:true を設定する。