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绑定在修改时会出错,因此我们就需要自己实现变量的更新事件。
Профессиональный сервисный центр отремонтировать телефон адрес ремонта смартфонов
Nhà cái ST666 được biết đến là sân chơi uy tín cung cấp các sản phẩm trò chơi cực kỳ đa dạng và chất lượng. Số lượng người tham gia vào hệ thống ngày càng tăng cao và chưa có dấu hiệu dừng lại. Hướng dẫn tham gia nhà cái nếu như anh em muốn tìm kiếm cơ hội nhận thưởng khủng. Hãy cùng khám phá những thông tin cần biết tại nhà cái để đặt cược và săn thưởng thành công.
http://zithromax.company/# zithromax z-pak
where can i purchase zithromax online
http://zithromax.company/# zithromax over the counter uk
Найти специалиста по независимой экспертизе и оценке!
Сайт-агрегатор компаний и услуг в сфере независимой экспертизы и оценки.
Мы создали этот проект, чтобы помочь вам найти надежных и опытных профессионалов
для решения ваших задач.
Главная цель — сделать процесс поиска специалистов по независимой экспертизе
и оценке максимально простым и эффективным. Мы стремимся предоставить вам
доступ к компаниям, которые гарантируют высокое качество услуг.
С нами вы сможете быстро найти нужного эксперта и сравнить различные предложения.
На нашем сайте собраны карточки компаний, каждая из которых содержит подробную
информацию о предоставляемых услугах. Посетители могут фильтровать предложения
по различным критериям:
Локация
Направление экспертизы
Стоимость услуг
Отзывы клиентов
Наш сайт Специалисты по независимой экспертизе и оценке.
how to buy zithromax online: generic zithromax – generic zithromax online paypal
Gay Boys Porn https://gay0day.com HD is the best gay porn tube to watch high definition videos of horny gay boys jerking, sucking their mates and fucking on webcam
discount neurontin: buy gabapentin – how to get neurontin cheap
neurontin 4 mg cheapest gabapentin neurontin 400 mg cost
http://amoxil.llc/# buying amoxicillin in mexico
where can i buy zithromax uk
neurontin 600 mg buy gabapentin drug neurontin 200 mg
https://www.question-ksa.com/user/ko66vip
магазин сейфов предлагает сейф 3 класса цена сейф взломостойкий 3 класс
purchase neurontin: buy gabapentin – neurontin 300 mg capsule
bs2best
магазин сейфов предлагает сейф 3 класса взломостойкости сейф взломостойкий 3 класс
магазин сейфов предлагает сейф взломостойкий 3 класс сейф взломостойкий 3 класс
spri roller
Over 7 years in development, the Rollga Method™ combines trigger points, acupressure points, fascial lines, meridians, and techniques like ART (Active Release Technique), MAT (Muscle Activation Technique), RPR (Reflexive Performance Reset) and others to optimize one’s health thru a new system of self care.
Download the Rollga App to learn about & tap into all that Rollga has to offer!
магазин сейфов предлагает сейф 3 класс в москве сейф взломостойкий 3 класс
over the counter neurontin: gabapentin for sale – neurontin 800 mg cost
where can i buy amoxocillin buy amoxil generic amoxicillin online
https://amoxil.llc/# 875 mg amoxicillin cost
zithromax for sale us
semaglutide rybelsus price Semaglutide pharmacy price
Профессиональный сервисный центр по ремонту моноблоков iMac в Москве.
Мы предлагаем: imac ремонт цена
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
st666
ST666 – Lựa Chọn Hàng Đầu Trong Thế Giới Cá Cược Trực Tuyến
Trong thời đại mà ngành công nghiệp cá cược trực tuyến đang bùng nổ, việc chọn một nhà cái uy tín là yếu tố quan trọng để đảm bảo trải nghiệm chơi an toàn và đáng tin cậy. ST666 nhanh chóng khẳng định vị thế của mình trên thị trường với những dịch vụ chất lượng và hệ thống bảo mật cao cấp, mang lại trải nghiệm cá cược công bằng, thú vị và an toàn.
Hệ Thống Trò Chơi Đa Dạng
ST666 cung cấp một danh mục trò chơi cá cược đa dạng, đáp ứng mọi nhu cầu và sở thích của người chơi. Từ thể thao, bắn cá, game bài, cho đến xổ số và live casino, tất cả đều được tối ưu hóa để mang lại cảm giác hứng thú cho người tham gia. Đặc biệt, với Live Casino, người chơi sẽ được trải nghiệm cá cược với các dealer thật thông qua hình thức phát trực tiếp, tạo cảm giác như đang tham gia tại các sòng bài thực tế.
Tỷ Lệ Cược Cạnh Tranh
Một trong những ưu điểm nổi bật của ST666 chính là tỷ lệ cược cực kỳ cạnh tranh, giúp người chơi tối ưu hóa lợi nhuận của mình. Các trận đấu thể thao được cập nhật liên tục với tỷ lệ cược hấp dẫn, tạo cơ hội chiến thắng lớn cho những ai yêu thích cá cược thể thao.
Bảo Mật An Toàn Tuyệt Đối
Yếu tố bảo mật luôn là một trong những tiêu chí hàng đầu khi chọn nhà cái cá cược. ST666 sử dụng công nghệ mã hóa hiện đại để bảo vệ thông tin cá nhân và các giao dịch tài chính của người chơi, đảm bảo mọi dữ liệu luôn được bảo mật tuyệt đối. Người chơi hoàn toàn có thể yên tâm khi tham gia cá cược tại đây.
Chăm Sóc Khách Hàng Chuyên Nghiệp
Dịch vụ chăm sóc khách hàng của ST666 luôn sẵn sàng hỗ trợ 24/7 qua nhiều kênh khác nhau như Live Chat, WhatsApp, Facebook, đảm bảo giải đáp mọi thắc mắc và xử lý các vấn đề nhanh chóng. Đội ngũ nhân viên tại đây được đào tạo chuyên nghiệp, tận tâm và chu đáo, luôn đặt lợi ích của khách hàng lên hàng đầu.
Ưu Đãi Hấp Dẫn
ST666 không chỉ nổi bật với các sản phẩm cá cược mà còn thu hút người chơi bởi các chương trình khuyến mãi hấp dẫn. Người chơi có thể nhận được nhiều ưu đãi như 280k miễn phí khi đăng nhập hàng ngày, cùng các chương trình thưởng nạp và hoàn tiền liên tục, giúp tối đa hóa cơ hội chiến thắng.
Lý Do ST666 Là Lựa Chọn Hàng Đầu
Sự kết hợp hoàn hảo giữa giao diện hiện đại, hệ thống trò chơi đa dạng, dịch vụ khách hàng tận tâm và tỷ lệ cược cạnh tranh đã giúp ST666 trở thành một trong những nhà cái cá cược trực tuyến uy tín hàng đầu tại Việt Nam. Đối với những ai đang tìm kiếm một nhà cái an toàn và chuyên nghiệp, ST666 chắc chắn sẽ là lựa chọn không thể bỏ qua.
Kết Luận
Với những ưu điểm vượt trội, ST666 xứng đáng là địa chỉ cá cược uy tín và an toàn cho tất cả người chơi. Đăng ký ngay hôm nay để trải nghiệm hệ thống cá cược đẳng cấp và nhận những ưu đãi hấp dẫn từ ST666!
http://zithromax.company/# zithromax 500 mg lowest price drugstore online
zithromax drug
stromectol cvs: cheapest stromectol – buy minocycline 50mg tablets
q916919 this content y3808970
buy cheap neurontin: gabapentin best price – neurontin 200 mg capsules
bs2best.at
neurontin online buy gabapentin medicine neurontin
https://zithromax.company/# can you buy zithromax over the counter
Профессиональный сервисный центр по ремонту моноблоков iMac в Москве.
Мы предлагаем: ремонт аймак москва
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
http://stromectol.agency/# purchase stromectol online
stromectol price us order stromectol ivermectin nz
An impressive share! I’ve just forwarded this onto a friend who had been conducting a little research on this. And he actually ordered me lunch because I found it for him… lol. So allow me to reword this…. Thanks for the meal!! But yeah, thanks for spending time to discuss this matter here on your web site.
http://gabapentin.auction/# neurontin online usa
zithromax over the counter
st666
ST666 – Lựa Chọn Hàng Đầu Trong Thế Giới Cá Cược Trực Tuyến
Trong thời đại mà ngành công nghiệp cá cược trực tuyến đang bùng nổ, việc chọn một nhà cái uy tín là yếu tố quan trọng để đảm bảo trải nghiệm chơi an toàn và đáng tin cậy. ST666 nhanh chóng khẳng định vị thế của mình trên thị trường với những dịch vụ chất lượng và hệ thống bảo mật cao cấp, mang lại trải nghiệm cá cược công bằng, thú vị và an toàn.
Hệ Thống Trò Chơi Đa Dạng
ST666 cung cấp một danh mục trò chơi cá cược đa dạng, đáp ứng mọi nhu cầu và sở thích của người chơi. Từ thể thao, bắn cá, game bài, cho đến xổ số và live casino, tất cả đều được tối ưu hóa để mang lại cảm giác hứng thú cho người tham gia. Đặc biệt, với Live Casino, người chơi sẽ được trải nghiệm cá cược với các dealer thật thông qua hình thức phát trực tiếp, tạo cảm giác như đang tham gia tại các sòng bài thực tế.
Tỷ Lệ Cược Cạnh Tranh
Một trong những ưu điểm nổi bật của ST666 chính là tỷ lệ cược cực kỳ cạnh tranh, giúp người chơi tối ưu hóa lợi nhuận của mình. Các trận đấu thể thao được cập nhật liên tục với tỷ lệ cược hấp dẫn, tạo cơ hội chiến thắng lớn cho những ai yêu thích cá cược thể thao.
Bảo Mật An Toàn Tuyệt Đối
Yếu tố bảo mật luôn là một trong những tiêu chí hàng đầu khi chọn nhà cái cá cược. ST666 sử dụng công nghệ mã hóa hiện đại để bảo vệ thông tin cá nhân và các giao dịch tài chính của người chơi, đảm bảo mọi dữ liệu luôn được bảo mật tuyệt đối. Người chơi hoàn toàn có thể yên tâm khi tham gia cá cược tại đây.
Chăm Sóc Khách Hàng Chuyên Nghiệp
Dịch vụ chăm sóc khách hàng của ST666 luôn sẵn sàng hỗ trợ 24/7 qua nhiều kênh khác nhau như Live Chat, WhatsApp, Facebook, đảm bảo giải đáp mọi thắc mắc và xử lý các vấn đề nhanh chóng. Đội ngũ nhân viên tại đây được đào tạo chuyên nghiệp, tận tâm và chu đáo, luôn đặt lợi ích của khách hàng lên hàng đầu.
Ưu Đãi Hấp Dẫn
ST666 không chỉ nổi bật với các sản phẩm cá cược mà còn thu hút người chơi bởi các chương trình khuyến mãi hấp dẫn. Người chơi có thể nhận được nhiều ưu đãi như 280k miễn phí khi đăng nhập hàng ngày, cùng các chương trình thưởng nạp và hoàn tiền liên tục, giúp tối đa hóa cơ hội chiến thắng.
Lý Do ST666 Là Lựa Chọn Hàng Đầu
Sự kết hợp hoàn hảo giữa giao diện hiện đại, hệ thống trò chơi đa dạng, dịch vụ khách hàng tận tâm và tỷ lệ cược cạnh tranh đã giúp ST666 trở thành một trong những nhà cái cá cược trực tuyến uy tín hàng đầu tại Việt Nam. Đối với những ai đang tìm kiếm một nhà cái an toàn và chuyên nghiệp, ST666 chắc chắn sẽ là lựa chọn không thể bỏ qua.
Kết Luận
Với những ưu điểm vượt trội, ST666 xứng đáng là địa chỉ cá cược uy tín và an toàn cho tất cả người chơi. Đăng ký ngay hôm nay để trải nghiệm hệ thống cá cược đẳng cấp và nhận những ưu đãi hấp dẫn từ ST666!
http://stromectol.agency/# minocycline 50mg over the counter
buy zithromax no prescription
stromectol 3 mg tablet: order stromectol – minocycline 100 mg for sale
https://zithromax.company/# buy zithromax online australia
zithromax price canada: zithromax for sale – buy azithromycin zithromax
Rybelsus 7mg Buy semaglutide pills rybelsus price
ממש לא כך. לא כולנו מצליחים להתבונן פנימה ולהבין את מבנה האישיות שלנו והצרכים הרגשיים שלנו. וכאשר איננו ברמה גבוהה ומכובדת, לשירות. למשל העובדה שיש דירות בחורות. וזוהי בדיוק הסיבה מדוע אנו מבלים עם נערות ליווי באילת, כך שזהו הבילוי המשלים עבור כל click over here
rybelsus generic Rybelsus 7mg rybelsus
https://amoxil.llc/# amoxicillin 500mg for sale uk
zithromax online pharmacy canada
https://amoxil.llc/# buying amoxicillin in mexico
Semaglutide pharmacy price: Buy compounded semaglutide online – Rybelsus 14 mg
аренда хостинга для сайта
price of neurontin: gabapentin price – over the counter neurontin