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

/ 3评论 / 349阅读 / 1点赞

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. איך בוחרים דירה דיסקרטית בבת ים?
    נקי, מסודר. דירה דיסקרטית מאפשרת לכם להיות
    יותר נינוחים ורגועים ולתת לבחורה לעשות את העבודה
    שלה. העיסויים והטיפולים המקצועיים
    יקנו לכם שעת חסד של רוגע ואושר, אשר תחזק את גופכם ורוחכם ותעניק לכם מלאי אנרגיות להמשך התקופה.

    העיסוי מסייע להשרות על נפשנו תחושות של רוגע ושלווה, להעשיר את הגוף
    באנרגיה ולסייע ולשחרר שרירים
    תפוסים מפעילות שגרתית, כמו ישיבה מול המחשב כל היום.
    באתר זה תוכלו למצוא את כל המידע על
    מסחר באינטרנט. בלוג המידע למעסיקים ולמעבידים.
    חברת m-r מינרלים ורפרקטורים מספקת את כול סוגי הייעוץ לתעשיה כולל תכנון הנדסי מלא,
    חישובי חום וניסוי חומרים חדשים למפעלים ולמתקנים חמים והכל בשיתוף
    עם החברה אירופית המובילה בתחום.
    צריכים יעוץ בתחום ציפויים חסיני אש או בבחירת
    חומרים ובידודים? עיסוי רפואי הוליסטי, טיפול פנים,
    רוקחות טבעית. מחפש עיסוי מקצועי ברמת
    גן? חברת פסים הינה נגרייה לייצור רהיטי גן מעץ מלא.
    חברת ליתן מדיקל הינה חברה המתמחה בייצור של עגלות רפואיות ומובילה קו מתקדם של עגלות רפואיות חדשניות.

  2. אנשים שנהנים מעיסוי שוודי מדווחים שהם מרגישים מלאי אנרגיה לאחר עיסוי
    במרכז ואף מצליחים לישון טוב יותר בלילה.
    יש לכם מספר שעות קצר במיוחד לבילוי עם בן או בת
    הזוג שלכם, או שאתם מחפשים מסיבת רווקים אינטימית במיוחד, האם חשבתם לשכור למספר שעות דירות דיסקרטיות
    בבית שמש או ללכת לראות דירות דיסקרטיות במרכז?
    לא משנה אם מדובר בסיום של מסיבת רווקים מטורפת
    או בתחילתו של ערב חול פשוט, עיסוי אירוטי בכפר סבא הוא הדבר
    שיהפוך אותו מעוד ערב לערב שייחרט
    בזיכרונך לנצח. אתם לא צריכים לצאת מהבית
    או לקום מהכורסא כדי להזמין עיסוי אירוטי.
    עיסוי אירוטי בהרצליה לגברים וזוגות, כל הפינוקים האינטימיים שתמיד חלמתם אליהם מחכים לכם באתר!
    באתר תמצאו גם שירותי נערות ליווי לפגישות עסקים וכך תוכלו לדעת שלא תישארו לבד אפילו רגע אחד.
    ישנן מדינות רבות שבהן הנערות
    מדברות אך ורק את השפה המקומית וזה יוצר בעיה בעיקר כאשר מציעים שירותים לתיירים מחו”ל ולאנשי עסקים מחו”ל.
    במדינות רבות ניתן למצוא אך ורק נערות ליווי
    מקומיות בעלות מאפיינים זהים. אנשי עסקים רבים נעזרים
    בשירותיהן, והם אשר מרבים בנסיעות לחו”ל ומבקרים במדינות שונות הם הראשונים להעיד על הרמה הגבוהה של הנערות בארץ.

  3. A motivating discussion is definitely worth comment. Theres no doubt that that you should write more on this issue, it may not be a taboo subject but usually folks dont talk about these subjects. To the next! Kind regards!!

发表回复

您的电子邮箱地址不会被公开。