I have the following code in HTML (coded with Vue JS & Bootstrap):
<b-tabs card>
<b-tab title="Followers" :title-link-class="'tab-title-class'">
Page View graph here
</b-tab>
<b-tab title="Orders" :title-link-class="'tab-title-class'">
Order Numbers graph here
</b-tab>
<b-tab title="Sales" :title-link-class="'tab-title-class'">
<sales-analytics></sales-analytics>
</b-tab>
<b-tab title="Profit" :title-link-class="'tab-title-class'">
Earning graph here
</b-tab>
</b-tabs>
The card contains 4 tabs, one of which is titled "Sales", and <sales-analytics></sales-analytics>
is a component I created to render a graph with Vue-ApexCharts library. However, the graph does not render automatically when the tab is selected. It can only run after I clicked F12 on Chrome, reloading the page does not work either.
I am thinking that the component should only run after the tab has been selected, rather than run altogether when the site is loaded (as this causes render problem when the tab is not selected when the site loads). Does anyone know how to implement this? Or an alternative way to solve this issue?
More stuff from the script section:
<script>
import Sales from '../analytics/Sales'
export default {
components: {
'sales-analytics': Sales
}
</script>
EDIT: After quite a bit of Googling, I found this: https://github.com/apertureless/vue-chartjs/issues/157 Which has a very similar behaviour to my situation, I want to v-if and mounted to load the component after the tab is selected. Anyone know how to do it?
STEP 01: First, Import the Child Component into the Parent Component inside script tag but above export default function declaration. STEP 02: Then, Register the Child Component inside the Parent Component by adding it to components object. STEP 03: Finally, Use the Child Component in the Parent Component Template.
Using Props To Share Data From Parent To Child # VueJS props are the simplest way to share data between components. Props are custom attributes that we can give to a component. Then, in our template, we can give those attributes values and — BAM — we're passing data from a parent to a child component!
The simplest way to get started with Vue is to grab the development version script for it and add it to the head tag of your HTML file. Then you can start Vue code inside the HTML file inside of script tags. And have the Vue code connect up with an existing element on your HTML page.
Thank you all of the comments. And for any future references, I was able to resolve the issue by using v-if
to check the current active tab, and then load the component under the scope.
<div v-if=“activeTab === ‘sale’>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With