過激派がVueをRTAしてみた

2023/11/10に公開

とりあえずAPI覚えろ

VueのAPI多すぎんだろぉぉぉ!!!!!
実際はこればっかり使うから目に焼き付けろ!!

  • ref()
  • computed()
  • watch()

ref()

const myName = ref<string>('');
myName.value = 'まじこじま';
console.log(myName.value); // 'まじこじま'

.valueがキモい?
うるさい黙れ!!

computed()

const myName = ref<string>('');
const myNameLength = computed(() => myName.value.length);
console.log(myNameLength.value); // 0
myName.value = 'まじこじま';
console.log(myNameLength.value); // 5

無名関数の中にref()で定義した値突っ込んどけ

watch()

const myName = ref<string>('');
watch(myName, (newName) => {
    console.log(`${newName}? だっさい名前だな!`);
});
myName.value = 'まじこじま'; // -> 'まじこじま? だっさい名前だな!'

見たらわかるやろ?
第三引数でimmediateをtrueにしたら即時実行出来るから!!!!!!
watchEffectとかダルいからやめとけ!!!

npm install pinia

何も考えないでインストールしろ

slot覚えろ

これ、子な??

<template>
    <button>
        <slot />
    </button>
</template>

んで、これが親な!!

<template>
    <div>
        <MyButton> ボタンA </MyButton>
        <MyButton> ボタンB </MyButton>
        <MyButton> ボタンC </MyButton>
    </div>
</template>

簡単だな!!!!!!

Props

これ親な!!

<template>
    <div>
        <MyButton blue> ボタンA </MyButton>
    </div>
</template>

んで、これが子な!!!!!

<script lang="ts" setup>
defineProps<{ blue?: boolean }>();
</script>
<template>
    <button :class="{ 'bg-blue-500': blue }">
        <slot />
    </button>
</template>

自分で属性定義できて便利だなぁぁぁぁぁ?!

Emits

ん、コォぉぉ!!!

<script lang="ts" setup>
const props = defineProps<{ modelValue: number }>();
const emit = defineEmits<{ (e: 'update:modelValue', value: number): void }>();
const value = computed({
    get: () => props.modelValue,
    set: (newValue) => emit('update:modelValue', newValue),
});
</script>
<template>
    <input type="number" v-model="value" />
</template>

うぉやぁぁぁぁぁ!!!!

<script lang="ts" setup>
const width = ref<number>(100);
</script>
<template>
    <div>
        <InputNumber v-model="width" />
    </div>
</template>

RTAぇぇぇぇぇ!!!!!

楽勝
ダァぁぁぁぁぁぁぁ!!

皆さんが過激派だったらどうやってRTA目指しますか?
コメントお待ちしております

Discussion