[vue3]组件间v-bind,v-model传参(defineProps,defineEmits)

/ 5,991评论 / 26665阅读 / 2点赞

1. 自定义组件间也可以和普通标签(<div> <span>)一样指定属性传参

2. 形如(<child value="hello coolight"></child>)给组件<child>指定value属性为"hello coolight"

3. 我们也可以自己模拟v-model的效果

下面我们来聊聊怎么传参、接收与更新

传参,v-bind

<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>

v-model

一般的传参进来,组件对它是只读的,不能修改。

只读也并不完全,对于数组和对象是可以操作其内部值的。

但我们可以使用v-model指定参数,使之允许组件来修改它。

”只读“的探讨

<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>

使用v-model

<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

<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>
  1. Jamiescact说道:

    http://indianpharmacyeasy.com/# buy medicines online in india

  2. Тут можно преобрести купить в москве оружейный сейф купить оружейный шкаф

  3. Тут можно преобрести сейфы для оружия пистолетные купить оружейные сейфы

  4. Jefferyswava说道:

    buying prescription drugs in mexico: Mexican Pharm Gate – purple pharmacy mexico price list

  5. I truly love your site.. Excellent colors & theme. Did you make this site yourself? Please reply back as I’m looking to create my own site and want to know where you got this from or what the theme is called. Kudos!

  6. Jefferyswava说道:

    best india pharmacy: Best online Indian pharmacy – buy prescription drugs from india

  7. sugar defender说道:

    sugar defender Discovering Sugar Protector has been a game-changer
    for me, as I have actually constantly been vigilant about handling my
    blood sugar level degrees. I now really feel equipped
    and positive in my ability to preserve healthy and balanced degrees, and
    my most recent medical examination have actually
    shown this progress. Having a trustworthy supplement
    to match my a substantial resource of comfort,
    and I’m genuinely grateful for the substantial difference
    Sugar Protector has actually made in my general health.

  8. Тут можно преобрести сейф несгораемый купить несгораемый сейф

  9. Тут можно преобрести несгораемый сейф купить купить огнестойкий сейф в москве

  10. GlennSeade说道:

    online shopping pharmacy india Best online Indian pharmacy indian pharmacy

  11. Quay lén trong phòng wc

  12. Wonderful post. It’s extremely well-written and filled with valuable details. Thank you for offering this content.

  13. Тут можно преобрести купить сейф для ружья в москве оружейные сейфы в москве

  14. Jamiescact说道:

    https://canadiandrugsgate.com/# natural drugs for ed

  15. best vpn说道:

    Hello there, There’s no doubt that your website could possibly be having internet browser compatibility issues. When I look at your site in Safari, it looks fine but when opening in Internet Explorer, it has some overlapping issues. I just wanted to give you a quick heads up! Apart from that, excellent blog.

  16. LarryHer说道:

    pharmacies in mexico that ship to usa: mexican pharmacy – buying from online mexican pharmacy

  17. Bradleyarrip说道:

    http://canadiandrugsgate.com/# buying ed pills online

  18. Jefferyswava说道:

    buy medicines online in india: Online medicine home delivery – п»їlegitimate online pharmacies india

  19. Can I simply just say what a relief to find someone who genuinely understands what they are talking about on the internet. You actually realize how to bring an issue to light and make it important. More people should check this out and understand this side of your story. I was surprised that you’re not more popular because you certainly possess the gift.

  20. profi-teh-remont说道:

    Сервисный центр предлагает ремонт pipo talk-t3 ремонт pipo talk-t3

  21. Jefferyswava说道:

    mexican border pharmacies shipping to usa: mexican pharmacy online – mexican rx online

  22. profi-teh-remont说道:

    Сервисный центр предлагает замена диска toshiba satellite pro s300l переустановка системы toshiba satellite pro s300l

  23. GlennSeade说道:

    online pharmacy india Online medicine home delivery indian pharmacies safe

  24. Тут можно преобрести шкаф для оружия купить купить сейф под карабин

  25. A motivating discussion is worth comment. I think that you should write more on this subject, it might not be a taboo matter but usually people do not speak about these topics. To the next! Many thanks.

  26. Тут можно преобрести сейф огнеупорный купить купить сейф несгораемый

  27. profi-teh-remont说道:

    Сервисный центр предлагает ремонт матрицы canon eos 1ds mark iii замена объектива canon eos 1ds mark iii

  28. Jamiescact说道:

    https://mexicanpharmgate.com/# mexican pharmaceuticals online

  29. Jamiescact说道:

    https://mexicanpharmgate.com/# mexican border pharmacies shipping to usa

  30. I blog quite often and I genuinely thank you for your information. This great article has truly peaked my interest. I’m going to take a note of your blog and keep checking for new information about once per week. I subscribed to your Feed too.

  31. Тут можно преобрести сейф под ружье купить оружейный сейф

  32. Тут можно преобрести оружейные шкафы в москве шкаф оружейный

  33. Bradleyarrip说道:

    https://mexicanpharmgate.com/# medicine in mexico pharmacies

  34. WilliamPot说道:

    Judul: Merasakan Pengalaman Bermain dengan “PG Slot” di Situs Casino ImgToon.com

    Dalam alam permainan kasino online, mesin slot telah menjadi salah satu permainan yang paling diminati, terutama jenis PG Slot. Di antara berbagai situs kasino online, ImgToon.com menjadi tujuan terbesar bagi pengguna yang ingin menguji keberuntungan mereka di banyak permainan slot, termasuk beberapa kategori terfavorit seperti demo pg slot, pg slot gacor, dan RTP slot.

    Demo PG Slot: Menjalani Tanpa adanya Risiko
    Salah satu fitur menarik yang diberikan oleh ImgToon.com adalah demo pg slot. Keistimewaan ini memungkinkan pemain untuk memainkan berbagai jenis slot dari PG tanpa harus memasang taruhan nyata. Dalam mode demo ini, Anda dapat memeriksa berbagai taktik dan memahami mekanisme permainan tanpa risiko kehilangan uang. Ini adalah metode terbaik bagi pemain baru untuk mengenal dengan permainan slot sebelum berpindah ke mode taruhan nyata.

    Mode demo ini juga menyediakan Anda pemahaman tentang potensi kemenangan dan imbalan yang mungkin bisa Anda peroleh saat bermain dengan uang sebenarnya. Pemain dapat menyusuri permainan tanpa ragu, menjadikan pengalaman bermain di PG Slot semakin mengasyikkan dan bebas stres.

    PG Slot Gacor: Kesempatan Besar Mendulang Kemenangan
    PG Slot Gacor adalah sebutan populer di kalangan pemain slot yang mengacu pada slot yang sedang dalam fase memberikan kemenangan tinggi atau lebih sering disebut “gacor”. Di ImgToon.com, Anda dapat mendapatkan berbagai slot yang termasuk dalam kategori gacor ini. Slot ini diakui memiliki peluang kemenangan lebih tinggi dan sering membagikan bonus besar, menjadikannya pilihan utama bagi para pemain yang ingin memperoleh keuntungan maksimal.

    Namun, harus diingat bahwa “gacor” atau tidaknya sebuah slot dapat bergeser, karena permainan slot bergantung generator nomor acak (RNG). Dengan melakukan permainan secara rutin di ImgToon.com, Anda bisa mengidentifikasi pola atau waktu yang tepat untuk memainkan PG Slot Gacor dan menambah peluang Anda untuk menang.

    RTP Slot: Faktor Krucial dalam Pencarian Slot
    Ketika berbicara tentang slot, istilah RTP (Return to Player) adalah faktor yang sangat esensial untuk dipertimbangkan. RTP Slot berkaitan pada persentase dari total taruhan yang akan dipulangkan kepada pemain dalam jangka panjang. Di ImgToon.com, setiap permainan PG Slot disertai dengan informasi RTP yang terperinci. Semakin tinggi persentase RTP, semakin besar peluang pemain untuk mendulang kembali sebagian besar dari taruhan mereka.

    Dengan memilih PG Slot yang memiliki RTP tinggi, pemain dapat mengoptimalkan pengeluaran mereka dan memiliki peluang yang lebih baik untuk menang dalam jangka panjang. Ini menjadikan RTP sebagai indikator krusial bagi pemain yang mencari keuntungan dalam permainan kasino online.

  35. Bradleyarrip说道:

    https://indianpharmacyeasy.com/# pharmacy website india

  36. Тут можно преобрести купить огнеупорный сейф сейфы огнестойкие

  37. GlennSeade说道:

    mens ed pills canadian pharmacy drugs gate buy erection pills

  38. Iyannanet说道:

    jack poker отзывы онлайн
    https://t.me/s/jack_poker_otzyivyi

  39. Iyannanet说道:

    jack poker отзывы игроков
    jack poker отзывы онлайн

  40. Jefferyswava说道:

    mexico pharmacies prescription drugs: mexicanpharmgate.com – purple pharmacy mexico price list

  41. I like reading a post that will make people think. Also, thank you for permitting me to comment.

  42. Jefferyswava说道:

    mexico pharmacies prescription drugs: Mexican Pharm Gate – mexican rx online

  43. Тут можно преобрести огнеупорные сейфы купить противопожарный сейф

  44. Тут можно преобрести огнестойкие сейфы цена несгораемые сейфы

  45. LarryHer说道:

    buy medicines online in india: indian pharmacy – india pharmacy mail order

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注