Props และเหตุการณ์แบบกำหนดเอง
ส่งข้อมูลลงด้วย props และส่งเหตุการณ์ขึ้นไปยังคอมโพเนนต์แม่
Props และเหตุการณ์แบบกำหนดเอง เป็นบทเรียน Vue Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Vue Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Vue Academy มีบทเรียนทั้งหมด 3 บทเรียน
การสื่อสารระหว่างคอมโพเนนต์แม่กับลูก
คอมโพเนนต์สื่อสารกันได้สองทิศทาง
- พร็อพส์ ส่งข้อมูลจากคอมโพเนนต์แม่ลงไปยังคอมโพเนนต์ลูก
- เหตุการณ์ ส่งข้อความจากคอมโพเนนต์ลูกขึ้นไปยังคอมโพเนนต์แม่
การไหลของข้อมูลทางเดียวนี้ช่วยให้แอปคาดเดาพฤติกรรมได้ง่าย
การประกาศพร็อพส์
คอมโพเนนต์ลูกจะประกาศพร็อพส์ที่ยอมรับ ใน script setup ให้ใช้ defineProps
<script setup>
const props = defineProps(['title', 'count'])
</script>
<template>
<h2>{{ title }}</h2>
<p>{{ count }}</p>
</template>พร็อพส์พร้อมชนิดข้อมูล
ประกาศพร็อพส์เป็นออบเจ็กต์เพื่อระบุชนิดข้อมูลสำหรับการตรวจสอบ
<script setup>
defineProps({
title: String,
count: Number,
isActive: Boolean
})
</script>พร็อพส์พร้อมค่าเริ่มต้นและค่าที่จำเป็น
คุณสามารถกำหนดให้พร็อพส์เป็นค่าที่จำเป็น และกำหนดค่าเริ่มต้นได้
<script setup>
defineProps({
title: {
type: String,
required: true
},
count: {
type: Number,
default: 0
}
})
</script>การส่งพร็อพส์จากคอมโพเนนต์แม่
คอมโพเนนต์แม่ส่งข้อมูลในรูปแอตทริบิวต์ ใช้ : เพื่อผูกค่าแบบไดนามิก
<template>
<ProductCard
title="Coffee Mug"
:count="stock"
:is-active="available"
/>
</template>
<!-- static string vs bound expression -->ธรรมเนียมการตั้งชื่อพร็อพส์
ประกาศพร็อพส์เป็น camelCase ใน JS และส่งพร็อพส์เป็น kebab-case ในเทมเพลต
- พร็อพส์ใน JS: isActive
- แอตทริบิวต์ในเทมเพลต: :is-active
Vue จะแปลงรูปแบบระหว่างทั้งสองแบบให้โดยอัตโนมัติ
พร็อพส์เป็นแบบอ่านอย่างเดียว
คอมโพเนนต์ลูกต้องไม่เปลี่ยนแปลงค่าพร็อพส์โดยตรง
- พร็อพส์ไหลลงทางเดียว
- การเปลี่ยนแปลงพร็อพส์จะทำให้พฤติกรรมคาดเดาได้ยากและทำให้เกิดคำเตือน
- หากต้องการเปลี่ยนข้อมูลที่ใช้ร่วมกัน ให้ส่งเหตุการณ์เพื่อให้คอมโพเนนต์แม่เป็นผู้ปรับปรุง
การประกาศเหตุการณ์ที่ส่งออก
คอมโพเนนต์ลูกประกาศเหตุการณ์ที่ส่งออกด้วย defineEmits
<script setup>
const emit = defineEmits(['increment', 'delete'])
</script>การส่งเหตุการณ์
เรียกใช้ฟังก์ชัน emit เพื่อส่งเหตุการณ์ขึ้นไป และอาจส่งข้อมูลประกอบไปด้วย
<script setup>
const emit = defineEmits(['add'])
function handleClick() {
emit("add", { id: 1, name: "Item" })
}
</script>
<template>
<button @click="handleClick">Add</button>
</template>การส่งเหตุการณ์ใน Options API
ใน Options API ให้เรียกใช้ this.$emit แทน
export default {
emits: ["save"],
methods: {
onSave() {
this.$emit("save", this.formData)
}
}
}คอมโพเนนต์แม่รับฟังเหตุการณ์
คอมโพเนนต์แม่รับฟังด้วย @event-name และรับข้อมูลประกอบของเหตุการณ์
<template>
<TodoItem
:task="task"
@delete="removeTask"
@add="onAdd"
/>
</template>
<script setup>
function onAdd(item) {
console.log("Added:", item.name)
}
</script>ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจของคุณเกี่ยวกับพร็อพส์และเหตุการณ์
ทบทวน: พร็อพส์และเหตุการณ์
คุณได้เรียนรู้การสื่อสารระหว่างคอมโพเนนต์
- defineProps ใช้ประกาศพร็อพส์พร้อมชนิดข้อมูลและค่าเริ่มต้น
- พร็อพส์ไหลลงทาง ลง และเป็นแบบอ่านอย่างเดียว
- defineEmits ใช้ประกาศเหตุการณ์
- emit("name", payload) ใช้ส่งเหตุการณ์ ขึ้น
- คอมโพเนนต์แม่รับฟังด้วย @event
ถัดไป: สล็อตและสล็อตแบบมีขอบเขต
คำถามที่พบบ่อย
บทเรียน “Props และเหตุการณ์แบบกำหนดเอง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Props และเหตุการณ์แบบกำหนดเอง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Vue Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Vue Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Props และเหตุการณ์แบบกำหนดเอง”
ส่งข้อมูลลงด้วย props และส่งเหตุการณ์ขึ้นไปยังคอมโพเนนต์แม่ คุณปฏิบัติ Vue Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Vue Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Vue Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “Props และเหตุการณ์แบบกำหนดเอง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Vue Academy นี้ได้ไหม
ได้ บทเรียน Vue Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างและลงทะเบียนคอมโพเนนต์
- Props และเหตุการณ์แบบกำหนดเอง
- สล็อตและสล็อตแบบมีขอบเขต