サイトアイコン 上尾市のWEBプログラマーによるブログ

「Vue.js3やさしい入門書」の感想・備忘録1

点数

87点

感想

Vue.3のComposition API、糖衣構文、Piniaについてわかりやすく説明されていて、なかなかの良書だった。

Vite

reactive関数

<script setup>
import {reactive } from 'vue'
const obj = reactive({num: 0})
const countUp = () => { obj.num++ }
</script>

toRefs関数

<script setup>
import { reactive, toRefs } from 'vue'
const state = reactive({name: '', score: 0})
const {name, score} = toRefs(state)
console.log(score) // ObjectRefImpl
console.log(score.value) // 0
</script>

ref関数

<script setup>
import { ref } from 'vue'
const count = ref(0)
const countUp = () => {
  count.value++
}
</script>
<template>
  <input type="number" v-model.number="count">
</template>

definePropsとdefineEmits

・子コンポーネント

<script setup>
defineProps(['persons'])
defineEmits(['select-row'])
</script>
<template>
  <ul>
    <li v-for="person in persons" @click="$emit('select-row', person.id)">{{ person.id }}:{{ person.name }}</li>
  </ul>
</template>

親コンポーネント

<script setup>
import { ref } from 'vue'
import Chapter4Child from './Chapter4Child.vue'
const objects = [
  {id: 1, name: 'one'},
  {id: 2, name: 'two'}
]
const selectedId = ref(0)
const handleSelectRow = (id) => {
  selectedId.value = id
}
</script>
<template>
  <Chapter4Child :persons="objects" @select-row="handleSelectRow"/>
  <p>selected={{ selectedId }}</p>
</template>
モバイルバージョンを終了