{"id":1499,"date":"2023-01-26T16:04:34","date_gmt":"2023-01-26T09:04:34","guid":{"rendered":"https:\/\/duniacoding.info\/?p=1499"},"modified":"2023-01-30T02:51:16","modified_gmt":"2023-01-29T19:51:16","slug":"component-pada-vue-js","status":"publish","type":"post","link":"https:\/\/duniacoding.id\/blog\/component-pada-vue-js\/","title":{"rendered":"Belajar Vue Js #6 : Component pada Vue Js"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/duniacoding.info\/wp-content\/uploads\/2022\/04\/Vue-logo-1-1024x512.png\" alt=\"component-pada-vue-js\" class=\"wp-image-1279\" srcset=\"https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2022\/04\/Vue-logo-1-1024x512.png 1024w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2022\/04\/Vue-logo-1-300x150.png 300w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2022\/04\/Vue-logo-1-768x384.png 768w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2022\/04\/Vue-logo-1.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Setelah kemarin kita kenalan dengan Template File, sekarang kita bakal belajar Component pada Vue Js. Component merupakan bagian penting dari beberapa Framework Frontend, salah satunya Vue Js, component ini akan memudahkan kita untuk membangun website secara lebih rapi dan terstruktur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Penjelasan Component pada Vue Js<\/h2>\n\n\n\n<p>Component merupakan sebuah petak Kode, yang bisa kita buat dan gunakan di beberapa halaman, tanpa harus menulis ulang kode tersebut. Sebagai contoh, disini kita memiliki 1 component dengan nama <em>ButtonCustom.vue<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n    &lt;button @click=\"data++\" class=\"btn-custom\"&gt;Clicked {{ data }} times&lt;\/button&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n    data() {\n        return {\n            data: 0,\n        };\n    },\n};\n&lt;\/script&gt;\n\n&lt;style scoped&gt;\n.btn-custom {\n    padding: 8px;\n    border-radius: 8px;\n    background-color: white;\n    color: black;\n    cursor: pointer;\n}\n\n.btn-custom:hover {\n    background-color: #eaeaea;\n}\n&lt;\/style&gt;<\/code><\/pre>\n\n\n\n<p>Nah, tombol ini akan kita panggil di Halaman utama yaitu App.vue dengan menggunakan cara pemanggilan component yaitu kita <em>import<\/em> terlebih dahulu, setelah itu kita perkenalkan didalam <em>&lt;script&gt;<\/em>. Contohnya seperti dibawah ini<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n    &lt;div&gt;\n        &lt;ButtonCustom \/&gt;\n    &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport ButtonCustom from \".\/components\/ButtonCustom.vue\";\n\nexport default {\n    components: { ButtonCustom },\n};\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/duniacoding.info\/wp-content\/uploads\/2023\/01\/image.png\" alt=\"\" class=\"wp-image-1500\" width=\"501\" height=\"239\" srcset=\"https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image.png 624w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-300x143.png 300w\" sizes=\"(max-width: 501px) 100vw, 501px\" \/><\/figure>\n\n\n\n<p>Nah, Component pada Vue Js ini memudahkan kita untuk menampilkan <em>ButtonCustom.vue <\/em>dengan cara yang sederhana, yaitu <em>import<\/em>, setelah itu dikenalkan sebagai <em>components<\/em>, lalu dipanggil didalam template dengan cara <em>&lt;ButtonCustom\/&gt;<\/em> sesuai bagaimana kita mengimport component ini. Lalu juga kita ingin menggunakan <em>ButtonCustom.vue <\/em>kembali, kita tinggal panggil kembali <em>&lt;ButtonCustom\/&gt;<\/em> ini seperti dibawah ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n    &lt;div&gt;\n        &lt;ButtonCustom \/&gt;\n        &lt;ButtonCustom \/&gt;\n        &lt;ButtonCustom \/&gt;\n    &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport ButtonCustom from \".\/components\/ButtonCustom.vue\";\n\nexport default {\n    components: { ButtonCustom },\n};\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"850\" height=\"246\" src=\"https:\/\/duniacoding.info\/wp-content\/uploads\/2023\/01\/image-1.png\" alt=\"\" class=\"wp-image-1501\" srcset=\"https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-1.png 850w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-1-300x87.png 300w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-1-768x222.png 768w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/figure>\n\n\n\n<p>Component ini akan sangat berguna apabila kita sudah membuat website dengan skala yang lebih besar, selain itu penggunaan component ini juga akan memudahkan kita untuk melakukan <em>maintenance<\/em>, karena setiap component terpisah sesuai kegunaan masing-masing. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pengorganisasian Component pada Vue Js<\/h2>\n\n\n\n<p>Nah, setelah kita tau konsep dari Component, berikutnya kita harus tau bagaimana component ini biasanya di organisir dalam Vue Js. Karena pada dasarnya, kita bisa menggunakan component didalam component, seperti contoh gambar dibawah ini<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"396\" src=\"https:\/\/duniacoding.info\/wp-content\/uploads\/2023\/01\/image-2-1024x396.png\" alt=\"\" class=\"wp-image-1502\" srcset=\"https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-2-1024x396.png 1024w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-2-300x116.png 300w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-2-768x297.png 768w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-2.png 1406w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Sebagai contoh, Kita mungkin memiliki komponen&nbsp;<em>header<\/em>, <em>sidebar<\/em>, dan area konten, masing-masing biasanya berisi komponen lain untuk tautan navigasi, posting blog, dan sebagainya.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Passing Data antar Component pada Vue Js<\/h2>\n\n\n\n<p>Hal selanjutnya yang harus kita pelajari adalah bagaimana Component ini bisa mendapatkan data dari component atas nya yang biasa kita sebut <em>parent. <\/em>Hal ini memungkinkan terjadi dengan yang namanya <em>props. <\/em><\/p>\n\n\n\n<p><em>Props <\/em>ini akan menangkap data yang diberikan dari <em>parent. <\/em>seperti ini penerapannya. Pertama kita ke <em>ButtonCustom.vue <\/em>lagi, kita akan menambahkan codingan props agar bisa menerima data. Disini kita akan menambahkan props <em>text<\/em>, dengan type <em>String<\/em>. Setelah itu, panggil <em>text <\/em>kedalam <em>button<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n    &lt;button class=\"btn-custom\"&gt;{{ text }}&lt;\/button&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n   <strong><em> props: {\n        text: {\n            type: String,\n        },\n    },<\/em><\/strong>\n};\n&lt;\/script&gt;\n\n&lt;style scoped&gt;\n.btn-custom {\n    padding: 8px;\n    border-radius: 8px;\n    background-color: white;\n    color: black;\n    cursor: pointer;\n}\n\n.btn-custom:hover {\n    background-color: #eaeaea;\n}\n&lt;\/style&gt;\n<\/code><\/pre>\n\n\n\n<p>Nah, apabila sudah sekarang kita kembali ke App.vue lalu kita berikan <em>props (data) <\/em>ke masing-masing component yang kita miliki.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n    &lt;div&gt;\n        &lt;ButtonCustom :text=\"'Text Pertama'\" \/&gt;\n        &lt;ButtonCustom :text=\"'Ini Props Kedua'\" \/&gt;\n        &lt;ButtonCustom :text=\"'Ini Props text 3'\" \/&gt;\n    &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport ButtonCustom from \".\/components\/ButtonCustom.vue\";\n\nexport default {\n    components: { ButtonCustom },\n};\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p>Setelah itu akan tampil seperti ini.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"844\" height=\"254\" src=\"https:\/\/duniacoding.info\/wp-content\/uploads\/2023\/01\/image-3.png\" alt=\"\" class=\"wp-image-1506\" srcset=\"https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-3.png 844w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-3-300x90.png 300w, https:\/\/duniacoding.id\/blog\/wp-content\/uploads\/2023\/01\/image-3-768x231.png 768w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/figure>\n\n\n\n<p>Jadi tiap-tiap <em>&lt;ButtonCustom\/&gt; <\/em>memiliki tulisan yang berbeda sesuai apa yang kita inputkan diatas. Kedepannya masih banyak hal yang harus kita pelajari tentang <em>props <\/em>ini mulai dari customasi <em>props <\/em>yang bisa kita buat <em>required<\/em>, bahkan bisa mendapat <em>props <\/em>dalam bentuk Array atau Object.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kesimpulan<\/h2>\n\n\n\n<p>Nah disini kita sudah mempelajari bagaimana component ini diterapkan dan bagaiman cara kita memberikan data ke component pada vue js. Kalian bisa melihat dokumentasi langsung dari Vue Js tentang component pada vue js <a href=\"https:\/\/vuejs.org\/guide\/components\/registration.html\" target=\"_blank\" rel=\"noopener\">disini.<\/a><\/p>\n\n\n\n<p>Kedepannya kita akan belajar tentang bagaimana antar Component pada Vue Js ini bisa berkomunikasi satu sama lain, jadi apabila component 1 di Klik, <em>parent <\/em>nya terpengaruh dan sejenisnya.<\/p>\n\n\n\n<p>Nah buat kalian yang mau belajar Tutorial lain Vue js bisa dilihat disini ya<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/duniacoding.info\/template-file-pada-vue-js\/\" target=\"_blank\" rel=\"noopener\">Belajar Vue Js #5 : Template File pada Vue Js<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Setelah kemarin kita kenalan dengan Template File, sekarang kita bakal belajar Component pada Vue Js. Component merupakan bagian penting dari beberapa Framework Frontend, salah satunya Vue Js, component ini akan memudahkan&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":1279,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[49,190,189,48],"class_list":["post-1499","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial","tag-tutorial","tag-tutorial-vue-js","tag-vue-js","tag-web-developer"],"_links":{"self":[{"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/posts\/1499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/comments?post=1499"}],"version-history":[{"count":7,"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/posts\/1499\/revisions"}],"predecessor-version":[{"id":1510,"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/posts\/1499\/revisions\/1510"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/media\/1279"}],"wp:attachment":[{"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/media?parent=1499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/categories?post=1499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/duniacoding.id\/blog\/wp-json\/wp\/v2\/tags?post=1499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}