setup(props,context){}
พารามิเตอร์ตัวแรก อุปกรณ์ประกอบฉาก:
อุปกรณ์ประกอบฉากเป็นอ็อบเจ็กต์ที่มีข้อมูลทั้งหมดที่ส่งผ่านโดยองค์ประกอบหลักไปยังองค์ประกอบลูก
ใช้อุปกรณ์ประกอบฉากในคอมโพเนนต์ลูกเพื่อรับ
วัตถุที่มีคุณสมบัติทั้งหมดที่ประกาศและส่งผ่านในการกำหนดค่า
กล่าวคือ: หากคุณต้องการส่งออกค่าที่ส่งผ่านโดยองค์ประกอบหลักไปยังองค์ประกอบย่อยผ่านอุปกรณ์ประกอบฉาก
คุณต้องใช้อุปกรณ์ประกอบฉากเพื่อรับการกำหนดค่า นั่นคือ อุปกรณ์ประกอบฉาก:{......}
หากคุณไม่ยอมรับการกำหนดค่าผ่านอุปกรณ์ประกอบฉาก ค่าเอาท์พุตจะไม่ได้กำหนดไว้
<template>
<div>
องค์ประกอบหลัก</div>
<ไม่มีต่อ :mytitle="msg"
othertitle="ชื่ออื่นๆ"
@sonclick="sonclick">
</ไม่มีต่อ>
</แม่แบบ>
<สคริปต์>
นำเข้า NoCont จาก "../components/NoCont.vue"
ค่าเริ่มต้นการส่งออก {
ตั้งค่า () {
ให้ผงชูรส={
title:'ข้อมูลจากองค์ประกอบหลักไปยังองค์ประกอบย่อย'
-
ฟังก์ชั่น sonclick (msss: string) {
console.log(msss)
-
กลับ {msg,sonclick}
-
ส่วนประกอบ:{
ไม่มีต่อ
-
-
</สคริปต์> <เทมเพลต>
<div @click="sonHander">
ฉันเป็นข้อมูลในองค์ประกอบย่อย</div>
</แม่แบบ>
<สคริปต์>
นำเข้า { DefineComponent, ตั้งค่า } จาก 'vue';
ส่งออก defaultdefineComponent({
ชื่อ: 'โนคอนต์',
// ไม่ยอมรับ // อุปกรณ์ประกอบฉาก:{
// ชื่อของฉัน:{
// ประเภท:วัตถุ
-
-
การตั้งค่า (อุปกรณ์ประกอบฉากบริบท) {
console.log('props==>',props.mytitle);//ไม่ได้กำหนดค่าเอาต์พุต
ฟังก์ชั่น sonHander(){
context.emit('sonclick','องค์ประกอบลูกถูกส่งไปยังองค์ประกอบหลัก')
-
กลับ {sonHander}
-
-
</สคริปต์>
เหตุใดค่าที่ส่งออกผ่าน props.mytitle จึงไม่ได้ถูกกำหนดไว้
เพราะเราไม่ได้ใช้อุปกรณ์ประกอบฉากในการรับการกำหนดค่า นั่นคือ
อุปกรณ์ประกอบฉาก:{
ชื่อของฉัน:{
ชนิด:วัตถุ
-
} ถ้าเราเพิ่มการกำหนดค่าการยอมรับ
พารามิเตอร์ที่สอง: บริบท คือวัตถุ
มี attrs อยู่ข้างใน (วัตถุที่ได้รับคุณลักษณะทั้งหมดบนแท็กปัจจุบัน)
แต่คุณลักษณะนี้เป็นวัตถุทั้งหมดที่ไม่ได้ประกาศว่าจะได้รับในอุปกรณ์ประกอบฉาก
หากคุณใช้อุปกรณ์ประกอบฉากเพื่อรับค่าและในเวลาเดียวกันคุณประกาศค่าที่คุณต้องการรับในอุปกรณ์ประกอบฉาก
: ค่าที่ได้รับคือ undefed
หมายเหตุ:
การได้รับค่า attrs ไม่จำเป็นต้องประกาศในอุปกรณ์ประกอบฉากเพื่อรับมัน .
ค่าที่ได้รับจากอุปกรณ์ประกอบฉากพารามิเตอร์แรกจะต้องประกาศในอุปกรณ์ประกอบฉากเพื่อรับ
การกระจายเหตุการณ์การเปล่งแสง (จำเป็นต้องใช้เหตุการณ์นี้เมื่อส่งผ่านไปยังองค์ประกอบหลัก)
และช่องสล็อต
<template>
<div @click="sonHander">
ฉันเป็นข้อมูลในองค์ประกอบลูก</div>
</แม่แบบ>
<สคริปต์>
นำเข้า { DefineComponent, ตั้งค่า } จาก 'vue';
ส่งออก defaultdefineComponent({
ชื่อ: 'โนคอนต์',
อุปกรณ์ประกอบฉาก:{
ชื่อของฉัน:{
ชนิด:วัตถุ
-
-
การตั้งค่า (อุปกรณ์ประกอบฉากบริบท) {
// เอาต์พุต {ชื่อ: ค่าที่ส่งผ่านโดยองค์ประกอบหลัก}
console.log('props==>',props.mytitle);
// แสดงชื่อคนอื่น [ใช้บริบทเพื่อรับค่า ไม่จำเป็นต้องใช้อุปกรณ์ประกอบฉากเพื่อยอมรับ]
console.log('context==> ',context.attrs.othertitle);
// เอาต์พุตไม่ได้กำหนด เนื่องจากบริบทไม่จำเป็นต้องใช้อุปกรณ์ประกอบฉากในการยอมรับ
console.log('contextmytitle==> ',context.attrs.mytitle);
ฟังก์ชั่น sonHander(){
context.emit('sonclick','องค์ประกอบลูกถูกส่งไปยังองค์ประกอบหลัก')
-
กลับ {sonHander}
-
-
</สคริปต์>
3. องค์ประกอบลูกส่งเหตุการณ์ไปยังองค์ประกอบหลัก
<template>
<div @click="sonHander">
ฉันเป็นข้อมูลในองค์ประกอบลูก</div>
</แม่แบบ>
<สคริปต์>
นำเข้า { DefineComponent, ตั้งค่า } จาก 'vue';
ส่งออก defaultdefineComponent({
ชื่อ: 'โนคอนต์',
อุปกรณ์ประกอบฉาก:{
ชื่อของฉัน:{
ชนิด:วัตถุ
-
-
การตั้งค่า (อุปกรณ์ประกอบฉากบริบท) {
ฟังก์ชั่น sonHander(){
context.emit('sonclick','องค์ประกอบลูกถูกส่งไปยังองค์ประกอบหลัก')
-
กลับ {sonHander}
-
-
</script> 4. ปรับการส่งเหตุการณ์ให้เหมาะสม
เรา
รู้ว่าบริบทพารามิเตอร์ที่สองคือวัตถุ
และวัตถุนั้นมีแอตทริบิวต์สามรายการ ได้แก่ attrs, slot และ emit
เมื่อส่งเหตุการณ์ สามารถใช้ emit โดยตรงได้
<div @click="sonHander">
ฉันเป็นข้อมูลในองค์ประกอบลูก</div>
</แม่แบบ>
<สคริปต์>
นำเข้า { DefineComponent, ตั้งค่า } จาก 'vue';
ส่งออก defaultdefineComponent({
ชื่อ: 'โนคอนต์',
อุปกรณ์ประกอบฉาก:{
ชื่อของฉัน:{
ชนิด:วัตถุ
-
-
การตั้งค่า (อุปกรณ์ประกอบฉาก, {attrs, สล็อต, ปล่อย}) {
//ใช้ emit โดยตรงสำหรับฟังก์ชันจัดส่งเหตุการณ์ sonHander(){
emit('sonclick','องค์ประกอบลูกถูกส่งไปยังองค์ประกอบหลัก')
-
กลับ {sonHander}
-
-
</script> 5. รับค่าที่ส่งผ่านโดยองค์ประกอบหลัก
เราจะใช้พารามิเตอร์อุปกรณ์ประกอบฉากเพื่อรับค่า
และ attrs เพื่อรับค่า
<template>
<ชม./>
<h2>ส่วนประกอบย่อย</h2>
<div @click="sonHander">
ฉันเป็นข้อมูลในองค์ประกอบย่อย</div>
<h2>ใช้คำสั่งประกอบฉากเพื่อรับ ==>{{ mytitle }}</h2>
<h2>ใช้พารามิเตอร์ attrs เพื่อรับ ==>{{ attrs.othertitle }}</h2>
</แม่แบบ>
<สคริปต์>
นำเข้า { DefineComponent, ตั้งค่า } จาก 'vue';
ส่งออก defaultdefineComponent({
ชื่อ: 'โนคอนต์',
อุปกรณ์ประกอบฉาก:{
ชื่อของฉัน:{
ชนิด:วัตถุ
-
-
การตั้งค่า (อุปกรณ์ประกอบฉาก, {attrs, สล็อต, ปล่อย}) {
ฟังก์ชั่น sonHander(){
emit('sonclick','องค์ประกอบลูกถูกส่งไปยังองค์ประกอบหลัก')
-
ส่งคืน {sonHander, attrs}
-
-
</สคริปต์>
ข้างต้นเป็นคำอธิบายโดยละเอียดเกี่ยวกับพารามิเตอร์ของฟังก์ชันการตั้งค่าใน vue3 - อุปกรณ์ประกอบฉากและบริบท ข้อมูลโปรดใส่ใจกับบทความอื่น ๆ ที่เกี่ยวข้องบนเว็บไซต์ PHP Chinese !
