Vuejs Use v-bind for prop destructuring
Use v-bind as kind of a “prop destructuring” instead of passing multiple object properties into a component as props.
Use v-bind as kind of a “prop destructuring” instead of passing multiple object properties into a component as props.
When you find yourself in need of using an argument for a computed property, consider creating and moving the logic into a child component.
<!-- BEFORE -->
<template>
<section class="posts">
<article v-for="post in posts">
<a :href="getUrl(post)">{{ getTitle(post) }}</a>
</article>
</section>
</template>
<script>
export default {
methods: {
getUrl (post) { ... },
getTitle (post) { ... }
}
}
</script>
<!-- AFTER -->
<!-- 1. PostList.vue -->
<template>
<section class="posts">
<PostItem v-for="post in posts" :post="post"/>
</section>
</template>
<!-- 2. PostItem.vue -->
<template>
<article v-for="post in posts">
<a :href="url">{{ title }}</a>
</article>
</template>
<script>
export default {
props: ['post'],
computed: {
url () { /* compute on this.post */ },
title () { /* compute on this.post */ }
}
}
</script>
This results in simpler and decoupled components, structured and moduralized code, plus you have the benefits of computed property’s caching for free.
Sometimes you just want to fetch some HTML from the server, display them right in your application, and call it done.