1. 程式人生 > >vue的props和$attrs

vue的props和$attrs

nbsp blog 註冊 ttr default rop template vue post

過去我們在vue的父子組件傳值的時候,我們先需要的子組件上用props註冊一些屬性:

<template>
    <div>
        props:{{name}},{{age}} 或者 {{$props[‘name‘]}},{{$props[‘age‘]}}
    </div>
</template>

export default{
    props: [‘name‘,‘age‘]
}

然後父組件調用的時候當屬性來傳值

<child name="rick" :age="18"></child>

如果我們給child傳props沒有註冊的屬性,我們就要用$attrs來取了

<child name="rick" :age="18" gender="male"></child>

child:

<template>
    <div>
        props:{{name}},{{age}} 或者 {{$props[‘name‘]}},{{$props[‘age‘]}} 
        <br>
        attrs: {{$attrs[‘gender‘]}}  在$attrs裏面只會有props沒有註冊的屬性
    </div>
</template>

export default{
    props: [‘name‘,‘age‘]
}

當然這個$attrs是vue2.4才推出的,為了簡化父組件和孫組件的傳值:

父組件 template(假設gender屬性沒有被props註冊):
<child1 gender="male"></child1>
child1 template(v-bind=”$attrs”,這是v-bind唯一可以直接跟等號的特殊寫法):
<child2 v-bind=”$attrs”></child2>

在child2裏面,就可以直接用props註冊gender,來直接獲取來自“祖父組件”的gender值了(當然,不註冊也是可以用$attrs來取值的)

vue的props和$attrs