Как обновить ряды на круговой диаграмме

#reactjs #apexcharts

#reactjs #apexcharts

Вопрос:

В моем index.js Я определил круговую диаграмму:

 import pieChart1 from './chart/pie-chart-1';
  

Затем он добавляется сюда в функции render():

         <Col md={6}>
                <Card>
                    <Card.Header>
                        <Card.Title as="h5">BALANCE</Card.Title>
                    </Card.Header>
                    <Card.Body>
                        <Chart {...pieChart1} />
                    </Card.Body>
                </Card>
            </Col>
  

У меня есть круговая диаграмма, определенная в . /chart/pie-chart-1.js как таковой:

 export default {
    height: 320,
    type: 'pie',
    options: {
        labels: ['Call', 'Put'],
        colors: ['#4680ff', '#0e9e4a'],
        legend: {
            show: true,
            position: 'bottom',
        },
        dataLabels: {
            enabled: true,
            dropShadow: {
                enabled: false,
            }
        },
        responsive: [{
            breakpoint: 480,
            options: {
                chart: {
                    width: 200
                },
                legend: {
                    position: 'bottom'
                }
            }
        }]
    },
    series: [50, 50]
  

У меня есть функция, которая вызывает API, выполняет некоторую математику и сохраняет значения в состояние.

   this.setState({CallPrem : callPrem, PutPrem : putPrem})
  

На данный момент я хочу обновить круговую диаграмму этими значениями …. как, черт возьми, мне это сделать? В основном хочу, чтобы ряд [0] имел значение callPrem, а ряд [1] — значение putPrem.

Пожалуйста, извините меня за мой нубовский жаргон с этим, я впервые работаю с reactjs, и мне это нравится, НО я медленно собираю воедино, как все это работает. Спасибо

Ответ №1:

У вас есть несколько вариантов обновления диаграммы.

Первый и рекомендуемый способ — обновить реквизиты, которые вы передаете своему компоненту

 const newOptions = {
  ...pieOptions,
  options: {
    ...options,
    labels: [newLabels]
  },
  series: [newSeries]
}
  

Обновление реквизитов автоматически приведет к повторному отображению диаграммы.


Другой способ — использовать основную ApexCharts.exec() функцию. Чтобы это сработало, вам нужно сначала установить идентификатор диаграммы в вашем pie-chart-1.js файл.

 export default {
    height: 320,
    type: 'pie',
    options: {
      chart: {
        id: "chart-id"
      }
    }
}
  

Как только вы установите идентификатор диаграммы, вы сможете вызвать следующий метод

 ApexCharts.exec('chart-id', 'updateOptions', {
  series: newSeries,
  labels: newLabels
})