可以分為 靜態傳遞 或者 使用 v-bind動態傳遞:
例如:
給 prop 傳入一個靜態的值:
<blog-post title="My journey with Vue"></blog-post>
也知道 prop 可以通過 v-bind 動態賦值,例如:
<!-- 動態賦予一個變量的值 --> <blog-post v-bind:title="post.title"></blog-post> <!-- 動態賦予一個復雜表達式的值 --> <blog-post v-bind:title="post.title + ' by ' + post.author.name"></blog-post>
在上述兩個示例中,我們傳入的值都是字符串類型
的,但實際上任何類型的值
都可以傳給一個 prop。
子組件接受:
export default { props : ["title"] } //或者 export default { props : { title:{ type:string, default:"" } } }
詳解:
傳入一個數字:
<!-- 即便 `42` 是靜態的,我們仍然需要 `v-bind` 來告訴 Vue --> <!-- 這是一個 JavaScript 表達式而不是一個字符串。--> <blog-post v-bind:likes="42"></blog-post> <!-- 用一個變量進行動態賦值。--> <blog-post v-bind:likes="post.likes"></blog-post>
傳入一個布爾值:
<!-- 包含該 prop 沒有值的情況在內,都意味着 `true`。--> <blog-post is-published></blog-post> <!-- 即便 `false` 是靜態的,我們仍然需要 `v-bind` 來告訴 Vue --> <!-- 這是一個 JavaScript 表達式而不是一個字符串。--> <blog-post v-bind:is-published="false"></blog-post> <!-- 用一個變量進行動態賦值。--> <blog-post v-bind:is-published="post.isPublished"></blog-post>
傳入一個數組:
<!-- 即便數組是靜態的,我們仍然需要 `v-bind` 來告訴 Vue --> <!-- 這是一個 JavaScript 表達式而不是一個字符串。--> <blog-post v-bind:comment-ids="[234, 266, 273]"></blog-post> <!-- 用一個變量進行動態賦值。--> <blog-post v-bind:comment-ids="post.commentIds"></blog-post>
傳入一個對象:
<!-- 即便對象是靜態的,我們仍然需要 `v-bind` 來告訴 Vue --> <!-- 這是一個 JavaScript 表達式而不是一個字符串。--> <blog-post v-bind:author="{ name: 'Veronica', company: 'Veridian Dynamics' }"></blog-post> <!-- 用一個變量進行動態賦值。--> <blog-post v-bind:author="post.author"></blog-post>
傳入一個對象的所有屬性:
如果你想要將一個對象的所有屬性都作為 prop 傳入,你可以使用不帶參數的 v-bind (取代 v-bind:prop-name)。
例如,對於一個給定的對象 post:
post: { id: 1, title: 'My Journey with Vue' }
下面的模板:
<blog-post v-bind="post"></blog-post>
等價於:
<blog-post v-bind:id="post.id" v-bind:title="post.title" ></blog-post>