Thuta Learning
ရှာဖွေရန်
ExercisesWeb Developmentbeginner

Practice: Reactivity & Template Basics

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Practice: Reactivity & Template Basics ကို ကိုယ်တိုင် လေ့ကျင့်ကြည့်မယ်
  • သင်ခဲ့ပြီးသား skill တွေကို practice လုပ်ပြီး ခိုင်မာအောင်လုပ်မယ်
  • အမှားရှာ၊ ပြင်တတ်၊ ကိုယ်တိုင် check လုပ်တတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

ဒီ lesson က teaching အသစ်မဟုတ်ဘဲ Basic chapter မှာသင်ခဲ့တဲ့ reactivity, template directives, event handling, forms v-model concept တွေကို လက်တွေ့ practice လုပ်ဖို့ ရည်ရွယ်တယ်။ Component အသစ်ဖန်တီးပြီး ref/computed ကို ကိုယ်တိုင် ရေးကြည့်တဲ့အခါ syntax ကို ပိုမှတ်မိလာမယ်။ Task တစ်ခုချင်းစီကို code editor ဖွင့်ပြီး ကိုယ်တိုင်ရေးကြည့်ဖို့ အကြံပြုပါတယ်။ Solution ကို ကြည့်ခင် ကိုယ့်ဟာကိုယ် ၅ မိနစ်လောက် ကြိုးစားကြည့်ရင် ပိုမှတ်မိပါလိမ့်မယ်။

လေ့ကျင့်ခန်းများ

Task 1: Counter component တစ်ခုတည်ဆောက်ပြီး ref value ကို increment/decrement/reset လုပ်နိုင်တဲ့ button သုံးလုံးထည့်ပါ။ Task 2: 'firstName' နှင့် 'fullName' ကို computed နဲ့ ချိတ်ပြီး input box ထဲ typing လုပ်ရင် fullName ချက်ချင်း update ဖြစ်အောင် v-model နှစ်ခု ချိတ်ကြည့်ပါ။ Task 3: array of items (fruits list) ကို v-for နဲ့ render လုပ်ပြီး v-if သုံးပြီး list ဗလာဖြစ်ရင် 'No items' ဆိုတဲ့ message ပြပါ။ Task 4: button click တစ်ခုမှာ @click.stop နဲ့ event modifier သုံးပြီး parent event ကို propagate မဖြစ်အောင် တားကြည့်ပါ။

Code နမူနာ

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

// Task 1: counter
const count = ref(0)

// Task 2: fullName
const firstName = ref('')
const lastName = ref('')
const fullName = computed(() => `${firstName.value} ${lastName.value}`.trim())

// Task 3: fruits list
const fruits = ref(['Apple', 'Banana', 'Mango'])
</script>

<template>
  <section>
    <p>Count: {{ count }}</p>
    <button @click="count++">+</button>
    <button @click="count--">-</button>
    <button @click="count = 0">Reset</button>
  </section>

  <section>
    <input v-model="firstName" placeholder="First name" />
    <input v-model="lastName" placeholder="Last name" />
    <p>Full name: {{ fullName }}</p>
  </section>

  <ul v-if="fruits.length">
    <li v-for="fruit in fruits" :key="fruit">{{ fruit }}</li>
  </ul>
  <p v-else>No items</p>
</template>
You should see
Counter buttons က count ကို ချက်ချင်း update လုပ်ပြီး၊ input နှစ်ခု typing လုပ်တာနဲ့ fullName ချက်ချင်း ပြောင်းသွားပြီး fruits list ကို screen ပေါ်မှာ item တွေအဖြစ် တစ်ခုချင်းပြသည်။

၅ မိနစ် စမ်းကြည့်

code sample ကို မကြည့်ဘဲ counter component တစ်ခုကို scratch ကနေ ၅ မိနစ်အတွင်း ကိုယ်တိုင်ရေးကြည့်ပါ၊ ပြီးမှ ဒီ code နဲ့ နှိုင်းယှဉ်ကြည့်ပါ။

သတိလေးတစ်ချက်

v-for နဲ့ v-if ကို element တစ်ခုတည်းအပေါ် တွဲသုံးရင် Vue 3 မှာ v-if priority ပိုမြင့်နေတဲ့အတွက် logic မှားနိုင်တာကြောင့် ဒီ example လိုမျိုး wrapper element ခွဲသုံးတာက ပိုစိတ်ချရပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • computed() ကို function ခေါ်သလို () ခံပြီးမသုံးဘဲ value တစ်ခုတည်းအနေနဲ့ သုံးမိခြင်း
  • v-for မှာ :key attribute မထည့်ဘဲ index ကို default အနေနဲ့ ပစ်ထားခြင်း

အခု ကိုယ်တိုင် စမ်းကြည့်

code sample ကို မကြည့်ဘဲ counter component တစ်ခုကို scratch ကနေ ၅ မိနစ်အတွင်း ကိုယ်တိုင်ရေးကြည့်ပါ၊ ပြီးမှ ဒီ code နဲ့ နှိုင်းယှဉ်ကြည့်ပါ။

You'll know it worked when: Counter buttons က count ကို ချက်ချင်း update လုပ်ပြီး၊ input နှစ်ခု typing လုပ်တာနဲ့ fullName ချက်ချင်း ပြောင်းသွားပြီး fruits list ကို screen ပေါ်မှာ item တွေအဖြစ် တစ်ခုချင်းပြသည်။

Practice: Reactivity & Template Basics | Thuta Learning