1. 自定义组件间也可以和普通标签(<div> <span>)一样指定属性传参
2. 形如(<child value="hello coolight"></child>)给组件<child>指定value属性为"hello coolight"
3. 我们也可以自己模拟v-model的效果
下面我们来聊聊怎么传参、接收与更新
目录
传参,v-bind
- 子组件接收参数需要使用一个函数defineProps()
- defineProps():
- 不需要import导入即可使用
- 只能在<script setup>中使用
- 不可以在局部变量中使用这个函数
- 不可以访问 <script setup> 中定义的其他变量
- 需要传入自定义参数名,[可选]指定参数类型,[可选]指定参数是否必须传入,[可选]指定参数的默认值。
- 类型:
- Number
- Boolean
- String
- Function
- Object
- Array
- ...
- 类型:
- 返回组件的接收所有参数构成的一个对象
- 当类型不对或是指定必须传入而没有传入时,vue将会有警告,报错
- 必须传入但没有传入:
- -
- 传入类型错误:
- 示例:
- 组件:
<script setup>
import { toRefs } from 'vue';
const props = defineProps({
text:{
type:String,
default:"默认:hello coolight",
required:false
}
})
const {
text,
} = toRefs(props);
</script>
<template>
<span>{{props.text}} - {{text}}</span>
</template>
- -
- 使用组件
<script setup>
import helloVue from '../../components/global/hello.vue';
</script>
<template>
<div>
<hello-vue />
<hello-vue text="洛天依"/>
<hello-vue :text="'v-bind:洛天依'" />
</div>
</template>
- 解析:
- 组件定义了一个要接收的参数text,并指定了它的类型为字符串String,默认值,并且它并不是必须传入的。
- 组件的<template>中,可以通过props访问参数props.text,也可以使用toRefs,解构出来。
- toRefs()需要import
- 如果不使用toRefs(),直接解构将导致参数失去响应性
- 在使用组件时,可以直接指定参数并传参,也可以使用v-bind,动态传参。
- 运行结果:
v-model
一般的传参进来,组件对它是只读的,不能修改。
只读也并不完全,对于数组和对象是可以操作其内部值的。
但我们可以使用v-model指定参数,使之允许组件来修改它。
”只读“的探讨
- 这个只读限制和const声明一样。
- 只读是针对变量本身的指向,如果你了解c/c++的指针则会很好理解,它限制了变量的指向,但对于变量指向的内容是可以操作的。
- 比如对数组、对象的内部变量的操作则是可以的,但不能让变量指向别的数组或对象,如 list = [],就是直接让list变量重新指向新的空数组[]。
- 示例:
- 组件:
<script setup>
import { reactive } from 'vue';
import { toRefs } from 'vue';
const props = defineProps({
obj:{
type:Object
}
})
const {
obj,
} = toRefs(props);
const btn1_click = () => {
props.obj.hello = "coolight - 1";
}
const btn2_click = () => {
props.obj = reactive({
hello:"coolight - 2"
})
}
</script>
<template>
<div>
<button @click="btn1_click">1: {{obj.hello}}</button>
<button @click="btn2_click">2: {{obj.hello}}</button>
</div>
</template>
- -
- 使用组件:
<script setup>
import { reactive } from 'vue';
import helloVue from '../../../components/global/hello.vue';
let obj = reactive({
hello:"洛天依"
})
</script>
<template>
<div>
<span>span: {{obj.hello}}</span>
<hello-vue :obj="obj" />
</div>
</template>
- 注意:
- 在使用组件的代码中,obj被使用reactive()进行赋值,因此获得了响应性,如果直接定义为一个对象,obj就没有响应性,后续无论在父子组件中修改obj,html页面的显示内容都不会改变。
- 运行结果:
- 点击btn2时修改失败,触发警告,提示变量obj是只读的:
使用v-model
- 使用v-model则可以解决上述问题
- 在这之前,组件内需要定义一个更新信号,“update:valueName”,其中的valueName为参数名
- 我们上面的例子里的参数是obj,因此信号就是 “update:obj”
- 使用defineEmits()可以定义信号,而它也是我们后面自定义事件的重点。
- 发出修改信号 emits("信号名", 传参);
- 示例:
- 组件:
<script setup>
import { toRefs } from 'vue';
const props = defineProps({
obj:{
type:Object
}
})
const emits = defineEmits ({
'update:obj':null //null位置可以是一个检查函数,用以检查绑定这个信号的处理函数是否有接收参数等,这里就不需要了
});
const {
obj,
} = toRefs(props);
const btn1_click = () => {
props.obj.hello = "btn1";
}
const btn2_click = () => {
emits('update:obj', {
hello:"btn2"
});
}
</script>
<template>
<div>
<button @click="btn1_click">{{obj.hello}} - 修改为 btn1</button>
<button @click="btn2_click">{{obj.hello}} - 修改为 btn2</button>
</div>
</template>
- -
- 使用组件:
<script setup>
import { reactive } from 'vue';
import helloVue from '../../../components/global/hello.vue';
let mValue = reactive({
obj:{
hello:"洛天依"
},
})
</script>
<template>
<div>
<span>span: {{mValue.obj.hello}}</span>
<hello-vue v-model:obj="mValue.obj"/>
</div>
</template>
- 注意:
- 即使使用了v-model,我们也不能直接在组件中用=修改obj(如obj = { hello:"wow" } 是不行的)
- 需要修改obj时,使用emits()发出信号即可
- 注意在使用组件的代码中,我们使用mValue包裹了obj后再传递给了子组件,因为如果同上一个例子中,直接声明obj后传递,在修改时会发生一些问题。因此建议把它放reactive()内。
- 运行结果:
尝试取代v-model
- 在上面的例子里,我们已经知道,修改obj时是发出了一个信号"update:obj"
- 那么我们就可以自己绑定一个事件给这个信号,然后自己来更新obj
- 示例(组件代码不变,使用组件的代码修改):
<script setup>
import { reactive } from 'vue';
import helloVue from '../../../components/global/hello.vue';
let mValue = reactive({
obj:{
hello:"洛天依"
},
})
const change = (in_obj) => {
console.log("我们的change");
mValue.obj = in_obj;
}
</script>
<template>
<div>
<span>span: {{mValue.obj.hello}}</span>
<!-- 也可以这样:
<hello-vue v-model:obj="mValue.obj" @update:obj="change"/>
-->
<hello-vue :obj="mValue.obj" @update:obj="change"/>
</div>
</template>
- 当我们自己实现更新事件时,使用v-model和v-bind绑定是一样的
- 运行后,无论使用了v-model还是v-bind,都会执行我们的更新事件change()
- 有时候我们传进去的值是getter生成的等各种原因,直接v-model绑定在修改时会出错,因此我们就需要自己实现变量的更新事件。
http://drugs1st.store/# impotence pills
This is extremely enlightening. I really appreciated going through it. The details is extremely well-organized and straightforward to follow.
best online pharmacy india cheapest online pharmacy india indian pharmacy
how to help ed: ed tablets – mexican pharmacy without prescription
ed symptoms cheap ed pills muse for ed
rgbet
RGBET là nhà cái hàng đầu trong lĩnh vực cá cược trực tuyến, đem đến cho người chơi tại Việt Nam trải nghiệm giải trí đẳng cấp với nhiều lựa chọn hấp dẫn. RGBET không chỉ cung cấp các môn thể thao phổ biến như bóng đá, bóng rổ, hay quần vợt mà còn mở rộng với các trò chơi sòng bạc, xổ số và đặc biệt là cá cược eSports.
Lưu Ý Quan Trọng về Trang RGBET
Hiện nay, một số trang web giả mạo RGBET nhằm mục đích lừa đảo, gây rủi ro cho người chơi. Đặc biệt, trang rgbet.info không có liên kết chính thức với RGBET. Để bảo vệ thông tin cá nhân, khách hàng nên truy cập trang chính thức của RGBET tại rgbet.co và tránh các nguồn không uy tín.
Lợi Ích Khi Tham Gia RGBET
RGBET cung cấp rất nhiều chương trình khuyến mãi hấp dẫn dành cho người chơi, đặc biệt trong tháng 10 với chương trình “Mỗi Ngày Đăng Nhập, Nhận Ngay Quà Hot”. Ngoài ra, RGBET hỗ trợ nhiều tính năng cá cược thể thao trực tiếp với tỷ lệ cược hấp dẫn, giúp người chơi tận hưởng trọn vẹn từng trận đấu.
Đa Dạng Lựa Chọn Cá Cược và Trò Chơi Sòng Bạc
Sòng bạc trực tuyến: Bao gồm các trò chơi phổ biến như Baccarat, Roulette, và Blackjack.
Thể thao ảo và eSports: Người chơi có thể đặt cược các giải đấu lớn và thỏa sức với trò chơi thể thao ảo.
Trò chơi máy đánh bạc: Với hàng loạt trò chơi máy đánh bạc chủ đề như “Kho Báu Aztec” hay “Aladdin & Cây Đèn Thần,” RGBET đáp ứng nhu cầu giải trí đa dạng của người chơi.
Bảo Mật và Pháp Lý
RGBET là một trong số ít các nhà cái được cấp phép bởi cơ quan quản lý uy tín, đảm bảo tiêu chuẩn bảo mật và minh bạch.
Tham gia RGBET ngay để khám phá thế giới cá cược trực tuyến chuyên nghiệp và bảo đảm!
indian pharmacies safe: best online pharmacy india – indian pharmacy
rgbet
RGBET là nhà cung cấp trò chơi bắn cá và cá mập nổi tiếng trực tuyến, đặc biệt qua ứng dụng RG Game Bắn Cá Online. Trải nghiệm trò chơi không chỉ đơn thuần là săn cá mà còn bao gồm các cuộc phiêu lưu đa dạng qua các địa điểm và sự kiện đặc sắc, mang đến niềm vui và thử thách kỹ năng cho người chơi.
Giới Thiệu về RG Game Bắn Cá Online
RG Game không chỉ cung cấp các trò bắn cá thông thường mà còn đi kèm với nhiều cấp độ và phần thưởng hấp dẫn. Người chơi có thể nâng cấp cá mập của mình để trở nên mạnh mẽ hơn, nhanh hơn, và có khả năng săn bắt những loài cá lớn hơn.
Các Đặc Điểm Nổi Bật của Trò Chơi
Nâng cấp Cá Mập: Người chơi có thể chọn từ 8 loại cá mập khác nhau, từ cá mập nhỏ đến các loại lớn như Cá Mập Trắng Lớn, Megalodon, và Cá Mập Voi.
Khám Phá Các Địa Điểm Mới: Trải nghiệm trò chơi qua nhiều địa điểm khác nhau với các loài cá đa dạng, các phụ kiện độc đáo, và khả năng di chuyển tự do trong đại dương.
Nhiệm Vụ và Trùm Đặc Biệt: Hoàn thành các nhiệm vụ với các trận đấu trùm và các sự kiện trực tiếp như Mega Gold Rush và các bầy cá lớn.
Hướng Dẫn Tải và Hỗ Trợ
Ứng dụng có sẵn để tải về từ RGBET, nơi người chơi có thể liên hệ qua các kênh hỗ trợ như Telegram, Zalo, và Facebook.
RGBET cam kết mang đến trải nghiệm bắn cá và săn mồi dưới nước tuyệt vời, cho phép người chơi khám phá biển cả với đồ họa 3D tuyệt đẹp và các thử thách mới đầy hứng thú.
Genuinely appreciated this entry. It provided plenty of helpful insights. Excellent work!
Compra Sustarox Crema Perú hoy mismo y experimenta una mejora significativa en tu movilidad y bienestar sin efectos secundarios. https://sustaroxcrema.com/
https://mexicanpharm1st.com/# buying prescription drugs in mexico online
http://indianpharm1st.com/# cheapest online pharmacy india
online pharmacy india: mail order pharmacy india – best india pharmacy
เอสเอ เกมมิ่ง เป็น ค่าย เกม บาคาร่าคลาสสิก ออนไลน์ ที่ได้รับการยอมรับอย่างกว้างขวาง ใน วงการสากล ว่าเป็น ผู้นำ ในการให้บริการ เกม คาสิโนออนไลน์ โดยเฉพาะในด้าน เกมไพ่ บาคาร่า ซึ่งเป็น เกมพนัน ที่ นักเดิมพัน สนใจเล่นกัน อย่างแพร่หลาย ใน บ่อนคาสิโน และ แพลตฟอร์มออนไลน์ ด้วย ลักษณะการเล่น ที่ ไม่ซับซ้อน การแทง เพียง ฝั่ง ฝั่งผู้เล่น หรือ เจ้ามือ และ โอกาสชนะ ที่ มาก ทำให้ บาคาร่า ได้รับ ความสนใจ อย่างมากใน ช่วงหลายปีหลัง โดยเฉพาะใน ประเทศไทย
หนึ่งในรูปแบบการเล่น ยอดนิยมที่ SA Gaming แนะนำ คือ สปีดบาคาร่า ซึ่ง ให้โอกาสผู้เล่นที่ ต้องการ ความรวดเร็ว และ การตัดสินใจไว สามารถ แทงได้รวดเร็ว นอกจากนี้ยังมีโหมด No Commission Baccarat ซึ่งเป็น แบบ ที่ ไม่มีค่าคอมมิชชั่นเพิ่ม เมื่อชนะ การเดิมพัน แบงค์เกอร์ ทำให้ โหมดนี้ ได้รับ ความคุ้มค่า จาก นักเสี่ยงโชค ที่มองหา ความคุ้มค่า ในการ ลงทุน
เกมไพ่บาคาร่า ของ เอสเอ เกมมิ่ง ยัง ถูกพัฒนา ให้มี ภาพ และ เสียง ที่ สมจริง สร้างบรรยากาศ ที่ เร้าใจ เสมือนอยู่ใน คาสิโนจริง พร้อมกับ ตัวเลือก ที่ทำให้ ผู้เสี่ยงโชค สามารถเลือก วิธีการเดิมพัน ที่ หลากหลาย ไม่ว่าจะเป็น การเดิมพัน ตามสูตร ของตน หรือการ ใช้กลยุทธ์ เพื่อชนะ นอกจากนี้ยังมี ดีลเลอร์ไลฟ์ ที่ ควบคุมเกม ในแต่ละ สถานที่ ทำให้ บรรยากาศ มี ความน่าสนใจ มากยิ่งขึ้น
ด้วย ความยืดหยุ่น ใน การเสี่ยงโชค และ วิธีที่สะดวก ในการ เล่น SA Gaming ได้ พัฒนา เกมบาคาร่า ที่ ตอบสนอง ทุก กลุ่ม ของนักเสี่ยงโชค ตั้งแต่ ผู้ที่เริ่มต้น ไปจนถึง นักเดิมพัน มืออาชีพ
rgbet
RGBET – Hướng Dẫn Truy Cập Nhà Cái RGBet Chính Thức Mới Nhất 2024
Cảnh Báo Về Các Trang Web Giả Mạo RGBET.INFO
Kính gửi quý khách hàng và người dùng thân mến,
Chúng tôi, đại diện chính thức của co], muốn thông báo về một số trang web giả mạo, đặc biệt là rgbet.info, đang mạo danh RGBet nhằm đánh lừa người dùng. Chúng tôi khẳng định rằng rgbet.info không có bất kỳ liên kết nào với RGBet chính thức, và việc truy cập vào các trang này có thể gây nguy cơ cho thông tin cá nhân cũng như tài khoản của bạn.
Việc giả mạo thương hiệu RGBet đã ảnh hưởng không nhỏ đến uy tín của chúng tôi và tiềm ẩn nguy cơ cho khách hàng. Những trang web này thường sẽ yêu cầu người dùng cung cấp thông tin nhạy cảm như số tài khoản ngân hàng, mật khẩu, hoặc các thông tin cá nhân khác, dễ dẫn đến mất mát tài sản hoặc dữ liệu cá nhân.
Cách Nhận Biết Liên Kết Chính Thức Của RGBet
Để đảm bảo sự an toàn tuyệt đối khi tham gia RGBet, khách hàng nên xác nhận rằng mình chỉ đang truy cập trang web RGBet thông qua liên kết chính thức tại co]. Đây là kênh duy nhất mà RGBet cung cấp để đảm bảo tính bảo mật, an toàn cho người dùng và tránh những rủi ro không đáng có. RGBet không bao giờ chuyển hướng người dùng đến trang web bên thứ ba như da88 hoặc các trang tương tự, và chúng tôi khuyến cáo bạn không nên tin tưởng những trang này.
Hướng Dẫn Và Hỗ Trợ Chính Thức Từ RGBet
RGBet luôn cố gắng hỗ trợ tốt nhất cho khách hàng thông qua các kênh liên lạc chính thức. Mọi thắc mắc, yêu cầu hỗ trợ hoặc vấn đề gặp phải khi truy cập có thể được giải đáp bởi đội ngũ hỗ trợ của chúng tôi. Vui lòng chỉ liên hệ thông qua các phương thức chính thức tại co] để đảm bảo thông tin được bảo mật.
Kính mong quý khách hàng luôn cảnh giác và lựa chọn RGBet một cách an toàn và thông minh để có trải nghiệm tuyệt vời nhất.
Trân trọng,
Đại Diện RGBet
Сервисный центр предлагает ремонт объектива 7artisans адреса ремонт объектива 7artisans адреса
Discover and download free gambling apps for Android. Enjoy casino games, sports betting, and more. Explore now – https://apkgambling.com/
reputable indian pharmacies: buy medicines online in india – indian pharmacy paypal
causes for ed best non prescription ed pills erectile dysfunction drug
http://indianpharm1st.com/# indian pharmacy
mexico drug stores pharmacies mexican drugstore online mexico drug stores pharmacies
india pharmacy mail order: top 10 online pharmacy in india – best india pharmacy
Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт бытовой техники в екатеринбурге
Amazing tips; can’t wait to try these out!
https://indianpharm1st.com/# indian pharmacy online
Если вы искали где отремонтировать сломаную технику, обратите внимание – техпрофи
buying prescription drugs in mexico: mexico pharmacies prescription drugs – mexican border pharmacies shipping to usa
Сервисный центр предлагает ремонт холодильника akai на дому ремонт холодильника akai рядом
ближайший ремонт телефонов
Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт бытовой техники
Everything is very open with a precise description of the issues. It was truly informative. Your website is extremely helpful. Thanks for sharing!
пин ап казино вход: пинап – pin up
http://1winbrasil.win/# pinup az
пин ап кз
https://1wintr.fun/# canl? casino siteleri
пинап казино
1xbet зеркало: 1хбет – 1xbet
pin-up casino giris: pin up – pin up azerbaycan
pinup az pin-up casino giris pin up casino
Сервисный центр предлагает починка экшен камер supra качественный ремонт экшен камер supra
Always love reading your insights!
guvenilir casino siteleri casino siteleri slot casino siteleri
Смешные анекдоты http://shutki-anekdoty.ru/anekdoty.
aloha4d
熟女ポルノ
пинап кз: пинап кз – пин ап кз
guvenilir casino siteleri: guvenilir casino siteleri – casino sitesi
Смешные анекдоты http://shutki-anekdoty.ru/anekdoty.
pinup az: pin-up casino giris – pin-up casino giris
Веселые анекдоты http://shutki-anekdoty.ru/anekdoty.
https://1winrussia.online/# 1хбет
пинап
https://1winbrasil.win/# pin-up
пин ап казино