Echarts.init вызывается несколько раз на одном и том же DOM. Почему это работает? - PullRequest
0 голосов
/ 10 февраля 2019

В официальной документации Echarts указано, что

Вы не должны инициализировать несколько экземпляров ECharts в одном контейнере.

источник документов

Возможно, я неправильно понял документацию, но я бы сделал исключение, если попытался вызвать echarts.init () для контейнера DOMуже содержащий экземпляр.Вместо этого я возвращаю тот же существующий экземпляр echarts.Это на самом деле полезно, но я использовал, чтобы избежать двойного создания экземпляров одной и той же диаграммы при обновлении содержимого диаграммы с помощью .setOption ().

Не могли бы вы объяснить, почему это работает и что вы считаете «наилучшей практикой»?

>> Codepen

const option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
}

const InstanceA = echarts.init(document.getElementById('chart'))
InstanceA.setOption(option)

// Here I would expect an exception from my understanding of
// https://ecomfe.github.io/echarts-doc/public/en/api.html#echarts.init
const InstanceB = echarts.init(document.getElementById('chart'))
InstanceB.setOption({ series: [{ type: 'bar', data: [10,10,10,10,10,10,10] }] })
// InstanceB still points to InstanceA
#chart {
  width: 400px;
  height: 200px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.1.0/echarts.min.js"></script>
<div id="chart"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...