As most advice, I've read from the forums is to use computed or props when trying to pass a reactive value on Chart data. I have done that but the issue is the chart does not even display.
<script setup>
import { partnerState } from '@/state/partnerState.js';
import { BarElement, CategoryScale, Chart as ChartJS, Legend, LinearScale, Title, Tooltip } from 'chart.js';
import {computed, reactive, ref} from 'vue';
import { Bar } from 'vue-chartjs';
import {storeToRefs} from "pinia";
ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale);
const options = reactive({
    responsive: true,
    maintainAspectRatio: false,
    scales: {
        ...
    },
    plugins: {
        ...
    }
});
const state = partnerState();
const stateData = storeToRefs(state); //using storeToRef to convert state to reactive
if (state.partnerAnalysis === null) {
    await state.getPartnerAnalysis();
}
const data = computed(() => ({
    labels: Object.keys(stateData.partnerAnalysis.newPurchases) // this returns an array of labels,
    datasets: [
        {
           ...
        },
        {
           ...
        }
    ]
}));
</script>
<template>
    <Bar id="partner-analysis-chart" :options="options" :data="data" />
</template>
What's the cause of chart not rendering when it has already been set to computed and I am also able to retrieve the data from API ?
Related post I've read: Pinia ChartJs Vue3 & Computed Chartjs Vue3
                        
You have to make sure, that the data you want to pass to the chart is available before you render the chart.
https://vue-chartjs.org/guide/#chart-with-api-data