Одни компоненты (родительские компоненты) могут содержать другие (дочерние компоненты). Например, один компонент выводит список объект, а для вывода отдельного объекта используется еще один компонент:
<!DOCTYPE html> <html> <head> <title>Компоненты Vue.js</title> <meta charset="utf-8" /> <style> .userdetails{ border-bottom: 1px solid #888; } </style> </head> <body> <div id="app"> <userslist :users="users"></userslist> </div> <script src="https://unpkg.com/vue@2.7.14/dist/vue.js"></script> <script> Vue.component('userdetails', { props: ["user"], template: `<div class="userdetails"> <p>Name: {{user.name}}</p> <p>Age: {{user.age}}</p> </div>` }); Vue.component('userslist', { props: ["users"], template: `<div> <userdetails v-for="user in users" :key="user.name" :user="user"></userdetails> </div>` }); new Vue({ el: "#app", data: { users: [{ name: 'Tom', age: 18 },{ name: 'Bob', age: 23 },{ name: 'Alice', age: 21 }] } }); </script> </body> </html>
Здесь в компонент userslist передается список объектов users. Для вывода каждого отдельного объекта userslist использует еще один компонент userdetails. С помощью директивы v-for происходит перебор списка объектов, и каждый объект передается в компонент userdetails.
В принципе мы могли бы определить все в одном компоненте, однако выделение отдельного компонента userdetails позволяет развивать и обновлять его разметку отдельно от родительского компонента. Например, если потребуется изменить структуру разметки html в компоненте, то достаточно это сделать в коде компонента userdetails. К тому же мы можем повторно использовать данный компонент в других компонентах и частях программы.