В официальной документации 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>