# 3.x 迁移指南
Chart.js 3.0 引入了许多重大更改。Chart.js 2.0 于 2016 年 4 月发布。从那时起,随着 Chart.js 的流行和功能集的增长,我们了解了一些关于如何更好地创建图表库的经验教训。为了提高性能、提供新功能并改善可维护性,有必要打破向后兼容性,但我们旨在仅在值得付出代价时这样做。v3 的一些主要亮点包括
- 大幅 性能 提升,包括能够跳过数据解析并通过 webworkers 并行渲染图表
- 具有更好默认值的额外可配置性和可脚本选项
- 完全重写的动画系统
- 重写的填充插件,包含许多错误修复
- 文档从 GitBook 迁移到 Vuepress
- 由 TypeDoc 生成的 API 文档,并经过验证
- 不再进行 CSS 注入
- 大量的错误修复
- 树状抖动
# 最终用户迁移
# 设置和安装
- 分发文件现在为小写。例如:dist/chart.js。
- Chart.js 不再提供 Chart.bundle.js和Chart.bundle.min.js。如果您使用的是这些构建,请查看 安装 和 集成 文档,了解有关推荐设置 Chart.js 的方法的详细信息。
- moment不再作为 npm 依赖项指定。如果您使用- time或- timeseries刻度,则必须包含 可用的适配器之一 (在新窗口中打开) 和相应的日期库。您不再需要从构建中排除 moment。
- 如果提供的画布/上下文已在使用中,则 Chart构造函数将抛出错误
- Chart.js 3 是树状抖动的。因此,如果您在项目中将其用作 npm模块,并希望利用此功能,则需要导入并注册要使用的控制器、元素、刻度和插件,有关要导入的所有可用项目的列表,请查看 集成。如果您通过script标签或从auto注册路径作为npm模块导入 Chart.js,则无需调用register,在这种情况下,您将无法获得树状抖动的好处。以下是如何注册组件的示例
import { Chart, LineController, LineElement, PointElement, LinearScale, Title } from `chart.js`
Chart.register(LineController, LineElement, PointElement, LinearScale, Title);
const chart = new Chart(ctx, {
    type: 'line',
    // data: ...
    options: {
        plugins: {
            title: {
                display: true,
                text: 'Chart Title'
            }
        },
        scales: {
            x: {
                type: 'linear'
            },
            y: {
                type: 'linear'
            }
        }
    }
})
# 图表类型
- horizontalBar图表类型已删除。可以使用新的- indexAxis选项配置水平条形图
# 选项
对传递给 Chart 构造函数的配置选项进行了一些更改。这些更改在下面有记录。
# 通用更改
- 可索引选项现在正在循环。backgroundColor: ['red', 'green']如果数据点超过 2 个,将导致交替的'red'/'green'。
- 对象数据的输入属性现在可以自由指定,有关详细信息,请查看 数据结构。
- 大多数选项使用代理进行解析,而不是与默认值合并。除了能够轻松地为不同的上下文启用不同的解析路由外,它还允许在可脚本选项中使用其他已解析的选项。- 选项默认情况下是可脚本的和可索引的,除非由于某些原因而被禁用。
- 可脚本选项接收选项解析器作为第二个参数,用于访问同一上下文中的其他选项。
- 如果在更早的时候没有找到匹配项,则解析会降级到上级范围。有关详细信息,请查看 选项。
 
# 特定更改
- elements.rectangle现在为- elements.bar
- hover.animationDuration现在在- animation.active.duration中配置
- responsiveAnimationDuration现在在- animation.resize.duration中配置
- 极区 elements.arc.angle现在以度数而不是弧度配置。
- 极区 startAngle选项现在与Radar保持一致,0 在顶部,值为度数。默认值已从-½π更改为0。
- 甜甜圈 rotation选项现在以度数表示,0 在顶部。默认值已从-½π更改为0。
- 甜甜圈 circumference选项现在以度数表示。默认值已从2π更改为360。
- 甜甜圈 cutoutPercentage已重命名为cutout,并接受以像素为单位的数字和以百分比为单位的字符串,以%结尾。
- scale选项已删除,取而代之的是- options.scales.r(或任何其他刻度 ID,其中- axis: 'r')
- scales.[x/y]Axes数组已删除。现在直接将刻度配置到- options.scales对象中,对象键是刻度 ID。
- scales.[x/y]Axes.barPercentage已移至数据集选项- barPercentage
- scales.[x/y]Axes.barThickness已移至数据集选项- barThickness
- scales.[x/y]Axes.categoryPercentage已移至数据集选项- categoryPercentage
- scales.[x/y]Axes.maxBarThickness已移至数据集选项- maxBarThickness
- scales.[x/y]Axes.minBarLength已移至数据集选项- minBarLength
- scales.[x/y]Axes.scaleLabel已重命名为- scales[id].title
- scales.[x/y]Axes.scaleLabel.labelString已重命名为- scales[id].title.text
- scales.[x/y]Axes.ticks.beginAtZero已重命名为- scales[id].beginAtZero
- scales.[x/y]Axes.ticks.max已重命名为- scales[id].max
- scales.[x/y]Axes.ticks.min已重命名为- scales[id].min
- scales.[x/y]Axes.ticks.reverse已重命名为- scales[id].reverse
- scales.[x/y]Axes.ticks.suggestedMax已重命名为- scales[id].suggestedMax
- scales.[x/y]Axes.ticks.suggestedMin已重命名为- scales[id].suggestedMin
- scales.[x/y]Axes.ticks.unitStepSize已删除。使用- scales[id].ticks.stepSize
- scales.[x/y]Axes.ticks.userCallback已重命名为- scales[id].ticks.callback
- scales.[x/y]Axes.time.format已重命名为- scales[id].time.parser
- scales.[x/y]Axes.time.max已重命名为- scales[id].max
- scales.[x/y]Axes.time.min已重命名为- scales[id].min
- 坐标轴的 scales.[x/y]Axes.zeroLine*选项已删除。请改用可脚本的刻度选项。
- 数据集选项 steppedLine已删除。使用stepped
- 图表选项 showLines已重命名为showLine,以匹配数据集选项。
- 图表选项 startAngle已移至radial刻度选项。
- 要覆盖图表实例中使用的平台类,请在配置对象中传递 platform: PlatformClass。请注意,应传递类,而不是类的实例。
- 对于甜甜圈、饼图、极区和雷达图,aspectRatio默认值为 1
- TimeScale不再默认从对象数据中读取- t。默认属性为- x或- y,具体取决于方向。有关如何更改默认值的详细信息,请查看 数据结构。
- tooltips命名空间已重命名为- tooltip,以匹配插件名称
- legend、- title和- tooltip命名空间已从- options移至- options.plugins。
- tooltips.custom已重命名为- plugins.tooltip.external
# 默认值
- global命名空间已从- defaults中删除。因此,- Chart.defaults.global现在为- Chart.defaults
- 数据集控制器默认值已重新定位到 overrides。例如,Chart.defaults.line现在为Chart.overrides.line
- 已从默认值中删除 default前缀。例如,Chart.defaults.global.defaultColor现在为Chart.defaults.color
- defaultColor已拆分为- color、- borderColor和- backgroundColor
- defaultFontColor已重命名为- color
- defaultFontFamily已重命名为- font.family
- defaultFontSize已重命名为- font.size
- defaultFontStyle已重命名为- font.style
- defaultLineHeight已重命名为- font.lineHeight
- 水平条形图的默认工具提示模式已从 'index'更改为'nearest',以匹配垂直条形图
- legend、- title和- tooltip命名空间已从- Chart.defaults移至- Chart.defaults.plugins。
- elements.line.fill默认值已从- true更改为- false。
- 折线图不再覆盖默认的 interaction模式。默认值已从'index'更改为'nearest'。
# 刻度
刻度的配置选项是 v3 中最大的更改。xAxes 和 yAxes 数组已删除,坐标轴选项现在是按刻度 ID 键的单个刻度。
下面显示了 v2 配置及其新的 v3 配置
options: {
  scales: {
    xAxes: [{
      id: 'x',
      type: 'time',
      display: true,
      title: {
        display: true,
        text: 'Date'
      },
      ticks: {
        major: {
          enabled: true
        },
        font: function(context) {
          if (context.tick && context.tick.major) {
            return {
              weight: 'bold',
              color: '#FF0000'
            };
          }
        }
      }
    }],
    yAxes: [{
      id: 'y',
      display: true,
      title: {
        display: true,
        text: 'value'
      }
    }]
  }
}
现在,在 v3 中
options: {
  scales: {
    x: {
      type: 'time',
      display: true,
      title: {
        display: true,
        text: 'Date'
      },
      ticks: {
        major: {
          enabled: true
        },
        color: (context) => context.tick && context.tick.major && '#FF0000',
        font: function(context) {
          if (context.tick && context.tick.major) {
            return {
              weight: 'bold'
            };
          }
        }
      }
    },
    y: {
      display: true,
      title: {
        display: true,
        text: 'value'
      }
    }
  }
}
- 时间刻度选项 distribution: 'series'已删除,取而代之的是新的刻度类型timeseries
- 在时间刻度中,autoSkip现在默认情况下处于启用状态,以与其他刻度保持一致
# 动画
Chart.js v3 中动画系统已完全重写。现在每个属性都可以单独进行动画。有关详细信息,请参阅动画文档。
# 可定制性
- 元素的custom属性已被移除。请使用可脚本化的选项
- 可脚本化选项context对象的hover属性已重命名为active,以与数据标签插件保持一致。
# 交互
- 为了允许 DRY 配置,添加了用于常见交互选项的根选项范围。options.hover和options.plugins.tooltip现在都从options.interaction继承。默认值是在defaults.interaction级别定义的,因此默认情况下,悬停和工具提示交互共享相同的模式等。
- interactions现在仅限于图表区域 + 允许的溢出
- {mode: 'label'}已替换为- {mode: 'index'}
- {mode: 'single'}已替换为- {mode: 'nearest', intersect: true}
- modes['X-axis']已替换为- {mode: 'index', intersect: false}
- options.onClick现在仅限于图表区域
- options.onClick和- options.onHover现在接受- chart实例作为第三个参数
- options.onHover现在将包装的- event作为第一个参数接收。可以通过- event.native访问先前的第一个参数值。
- options.hover.onHover已移除,请使用- options.onHover。
# 刻度
- options.gridLines已重命名为- options.grid
- options.gridLines.offsetGridLines已重命名为- options.grid.offset。
- options.gridLines.tickMarkLength已重命名为- options.grid.tickLength。
- options.ticks.fixedStepSize已不再使用。请使用- options.ticks.stepSize。
- options.ticks.major和- options.ticks.minor已被可脚本化选项替换为刻度字体。
- Chart.Ticks.formatters.linear已重命名为- Chart.Ticks.formatters.numeric。
- options.ticks.backdropPaddingX和- options.ticks.backdropPaddingY已在径向线性刻度中替换为- options.ticks.backdropPadding。
# 工具提示
- xLabel和- yLabel已移除。请使用- label和- formattedValue
- filter选项现在将在调用时传递额外的参数,并且应该具有方法签名- function(tooltipItem, index, tooltipItems, data)
- custom回调现在接受具有- tooltip和- chart属性的上下文对象
- 与工具提示选项相关的工具提示模型的所有属性都已移至options属性内。
- 回调不再获得data参数。工具提示项参数包含图表和数据集而不是
- 工具提示项的index参数已重命名为dataIndex,value已重命名为formattedValue
- xPadding和- yPadding选项已合并到单个- padding对象中
# 开发人员迁移
虽然 Chart.js 3 的最终用户迁移相当简单,但开发人员迁移可能更复杂。如果您需要迁移方面的帮助,请在 #dev Discord (opens new window) 频道中寻求帮助。
一些最重大的变化
- 动画系统已完全重写,性能更高。- Element._model和- Element._view已不再使用,属性现在直接设置在元素上。您将不得不使用方法- getProps在大多数方法(如- inXRange/- inYRange和- getCenterPoint)中访问这些属性。请查看Chart.js 提供的元素 (opens new window)以获取示例。
- 在控制器中构建元素时,现在建议调用updateElement来提供元素属性。还添加了getSharedOptions和includeOptions等方法,以跳过冗余计算。请查看Chart.js 提供的控制器 (opens new window)以获取示例。
 
- 刻度引入了新的解析 API。此 API 采用用户数据并将其转换为更标准的格式。例如,它允许用户将数字数据提供为string,并在必要时将其转换为number。以前,这在图表呈现时动态完成。现在,它是在前面完成的,如果用户以正确的格式提供数据,则可以跳过它以提高性能。如果您使用标准数据格式(如x/y),您可能不需要执行任何操作。如果您使用自定义数据格式,您将不得不覆盖core.datasetController.js中的某些解析方法。可以在chartjs-chart-financial (opens new window)中找到示例,它使用{o, h, l, c}数据格式。
对控制器进行了一些更直接的更改,但会影响所有控制器
- 选项- global已从默认名称空间中移除,因为它是多余的,并且有时不一致
- 数据集默认值现在位于图表类型选项下,而不是相反。由于向后兼容性的原因,这在 2.x 中引入时无法做到。修复它消除了新图表开发人员遇到的最大障碍
- 刻度默认选项需要根据最终用户迁移部分中的说明进行更新(例如,x而不是xAxes,y而不是yAxes)
 
- updateElement已更改为- updateElements并且具有新的方法签名,如下所述。这提供了性能增强,例如允许更轻松地重用对所有元素都通用的计算,并减少函数调用次数
# 已移除
以下属性和方法已被移除
# 从 Chart 中移除
- Chart.animationService
- Chart.active
- Chart.borderWidth
- Chart.chart.chart
- Chart.Bar。新图表是通过- new Chart创建的,并提供适当的- type参数
- Chart.Bubble。新图表是通过- new Chart创建的,并提供适当的- type参数
- Chart.Chart
- Chart.Controller
- Chart.Doughnut。新图表是通过- new Chart创建的,并提供适当的- type参数
- Chart.innerRadius现在位于甜甜圈、饼图和极坐标控制器上
- Chart.lastActive
- Chart.Legend已移动到- Chart.plugins.legend._element并设为私有
- Chart.Line。新图表是通过- new Chart创建的,并提供适当的- type参数
- Chart.LinearScaleBase现在必须导入,不能从- Chart对象访问
- Chart.offsetX
- Chart.offsetY
- Chart.outerRadius现在位于甜甜圈、饼图和极坐标控制器上
- Chart.plugins已替换为- Chart.registry。插件默认值现在位于- Chart.defaults.plugins[id]中。
- Chart.plugins.register已替换为- Chart.register。
- Chart.PolarArea。新图表是通过- new Chart创建的,并提供适当的- type参数
- Chart.prototype.generateLegend
- Chart.platform。它只包含- disableCSSInjection。v3 中从未注入 CSS。
- Chart.PluginBase
- Chart.Radar。新图表是通过- new Chart创建的,并提供适当的- type参数
- Chart.radiusLength
- Chart.scaleService已替换为- Chart.registry。刻度默认值现在位于- Chart.defaults.scales[type]中。
- Chart.Scatter。新图表是通过- new Chart创建的,并提供适当的- type参数
- Chart.types
- Chart.Title已移动到- Chart.plugins.title._element并设为私有
- Chart.Tooltip现在由工具提示插件提供。定位器可以从- tooltipPlugin.positioners访问
- ILayoutItem.minSize
# 从数据集控制器中移除
- BarController.getDatasetMeta().bar
- DatasetController.addElementAndReset
- DatasetController.createMetaData
- DatasetController.createMetaDataset
- DoughnutController.getRingIndex
# 从元素中移除
- Element.getArea
- Element.height
- Element.hidden已替换为图表级别状态,可与- getDataVisibility(index)/- toggleDataVisibility(index)一起使用
- Element.initialize
- Element.inLabelRange
- Line.calculatePointY
# 从助手函数中移除
- helpers.addEvent
- helpers.aliasPixel
- helpers.arrayEquals
- helpers.configMerge
- helpers.findIndex
- helpers.findNextWhere
- helpers.findPreviousWhere
- helpers.extend。请改用- Object.assign。
- helpers.getValueAtIndexOrDefault。请改用- helpers.resolve。
- helpers.indexOf
- helpers.lineTo
- helpers.longestText已设为私有
- helpers.max
- helpers.measureText已设为私有
- helpers.min
- helpers.nextItem
- helpers.niceNum
- helpers.numberOfLabelLines
- helpers.previousItem
- helpers.removeEvent
- helpers.roundedRect
- helpers.scaleMerge
- helpers.where
# 从布局中移除
- Layout.defaults
# 从刻度中移除
- LinearScaleBase.handleDirectionalChanges
- LogarithmicScale.minNotZero
- Scale.getRightValue
- Scale.longestLabelWidth
- Scale.longestTextCache现在是私有的
- Scale.margins现在是私有的
- Scale.mergeTicksOptions
- Scale.ticksAsNumbers
- Scale.tickValues现在是私有的
- TimeScale.getLabelCapacity现在是私有的
- TimeScale.tickFormatFunction现在是私有的
# 从插件(图例、标题和工具提示)中移除
- IPlugin.afterScaleUpdate。请改用- afterLayout
- Legend.margins现在是私有的
- 图例 onClick、onHover和onLeave选项现在除了通过this隐式接收外,还会接收图例作为第三个参数。
- 图例 onClick、onHover和onLeave选项现在接收一个包装的event作为第一个参数。以前第一个参数值可以通过event.native访问。
- Title.margins现在是私有的。
- 工具提示项的 x和y属性已替换为element。您可以使用element.x和element.y或element.tooltipPosition()代替。
# 公共 API 的移除
以下公共 API 已被移除。
- getElementAtEvent被- chart.getElementsAtEventForMode(e, 'nearest', { intersect: true }, false)替换。
- getElementsAtEvent被- chart.getElementsAtEventForMode(e, 'index', { intersect: true }, false)替换。
- getElementsAtXAxis被- chart.getElementsAtEventForMode(e, 'index', { intersect: false }, false)替换。
- getDatasetAtEvent被- chart.getElementsAtEventForMode(e, 'dataset', { intersect: true }, false)替换。
# 私有 API 的移除
以下私有 API 已被移除。
- Chart._bufferedRender
- Chart._updating
- Chart.data.datasets[datasetIndex]._meta
- DatasetController._getIndexScaleId
- DatasetController._getIndexScale
- DatasetController._getValueScaleId
- DatasetController._getValueScale
- Element._ctx
- Element._model
- Element._view
- LogarithmicScale._valueOffset
- TimeScale.getPixelForOffset
- TimeScale.getLabelWidth
- Tooltip._lastActive
# 重命名
以下属性在 v3 开发过程中被重命名。
- Chart.Animation.animationObject被重命名为- Chart.Animation
- Chart.Animation.chartInstance被重命名为- Chart.Animation.chart
- Chart.canvasHelpers被合并到- Chart.helpers中。
- Chart.elements.Arc被重命名为- Chart.elements.ArcElement
- Chart.elements.Line被重命名为- Chart.elements.LineElement
- Chart.elements.Point被重命名为- Chart.elements.PointElement
- Chart.elements.Rectangle被重命名为- Chart.elements.BarElement
- Chart.layoutService被重命名为- Chart.layouts
- Chart.pluginService被重命名为- Chart.plugins
- helpers.callCallback被重命名为- helpers.callback
- helpers.drawRoundedRectangle被重命名为- helpers.roundedRect
- helpers.getValueOrDefault被重命名为- helpers.valueOrDefault
- LayoutItem.fullWidth被重命名为- LayoutItem.fullSize
- Point.controlPointPreviousX被重命名为- Point.cp1x
- Point.controlPointPreviousY被重命名为- Point.cp1y
- Point.controlPointNextX被重命名为- Point.cp2x
- Point.controlPointNextY被重命名为- Point.cp2y
- Scale.calculateTickRotation被重命名为- Scale.calculateLabelRotation
- Tooltip.options.legendColorBackgroupd被重命名为- Tooltip.options.multiKeyBackground
# 私有 API 重命名
以下私有 API 已被重命名。
- BarController.calculateBarIndexPixels被重命名为- BarController._calculateBarIndexPixels
- BarController.calculateBarValuePixels被重命名为- BarController._calculateBarValuePixels
- BarController.getStackCount被重命名为- BarController._getStackCount
- BarController.getStackIndex被重命名为- BarController._getStackIndex
- BarController.getRuler被重命名为- BarController._getRuler
- Chart.destroyDatasetMeta被重命名为- Chart._destroyDatasetMeta
- Chart.drawDataset被重命名为- Chart._drawDataset
- Chart.drawDatasets被重命名为- Chart._drawDatasets
- Chart.eventHandler被重命名为- Chart._eventHandler
- Chart.handleEvent被重命名为- Chart._handleEvent
- Chart.initialize被重命名为- Chart._initialize
- Chart.resetElements被重命名为- Chart._resetElements
- Chart.unbindEvents被重命名为- Chart._unbindEvents
- Chart.updateDataset被重命名为- Chart._updateDataset
- Chart.updateDatasets被重命名为- Chart._updateDatasets
- Chart.updateLayout被重命名为- Chart._updateLayout
- DatasetController.destroy被重命名为- DatasetController._destroy
- DatasetController.insertElements被重命名为- DatasetController._insertElements
- DatasetController.onDataPop被重命名为- DatasetController._onDataPop
- DatasetController.onDataPush被重命名为- DatasetController._onDataPush
- DatasetController.onDataShift被重命名为- DatasetController._onDataShift
- DatasetController.onDataSplice被重命名为- DatasetController._onDataSplice
- DatasetController.onDataUnshift被重命名为- DatasetController._onDataUnshift
- DatasetController.removeElements被重命名为- DatasetController._removeElements
- DatasetController.resyncElements被重命名为- DatasetController._resyncElements
- LayoutItem.isFullWidth被重命名为- LayoutItem.isFullSize
- RadialLinearScale.setReductions被重命名为- RadialLinearScale._setReductions
- RadialLinearScale.pointLabels被重命名为- RadialLinearScale._pointLabels
- Scale.handleMargins被重命名为- Scale._handleMargins
# 更改
本节中列出的 API 在版本 2 中的签名或行为已发生更改。
# 刻度更改
- Scale.getLabelForIndex被- scale.getLabelForValue替换。
- Scale.getPixelForValue现在只需要一个参数。对于- TimeScale,该参数必须是自纪元以来的毫秒数。作为性能优化,它可能接受可选的第二个参数,给出数据点的索引。
# 刻度更改
- Scale.afterBuildTicks现在与其他回调一样没有参数。
- Scale.buildTicks现在预计会返回刻度对象。
- Scale.convertTicksToLabels被重命名为- generateTickLabels。现在它预计会设置作为输入给定的刻度的标签属性。
- Scale.ticks现在包含对象而不是字符串。
- 当 autoSkip选项启用时,Scale.ticks现在仅包含非跳过的刻度,而不是所有刻度。
- 刻度现在始终按单调递增的顺序生成。
# 时间刻度更改
- getValueForPixel现在返回自纪元以来的毫秒数。
# 控制器更改
# 核心控制器
- updateHoverStyle的第一个参数现在是一个对象数组,包含- element、- datasetIndex和- index。
- resize的签名或参数已更改,第一个- silent参数已删除。
# 数据集控制器
- updateElement被- updateElements替换,现在它接受要更新的元素、- start索引、- count和- mode。
- setHoverStyle和- removeHoverStyle现在还接受- datasetIndex和- index。
# 交互更改
- 交互模式方法现在返回一个包含 element、datasetIndex和index的对象数组。
# 布局更改
- ILayoutItem.update不再有返回值。
# 辅助函数更改
所有辅助函数现在都以扁平化的层次结构公开,例如,Chart.helpers.canvas.clipArea -> Chart.helpers.clipArea
# 画布辅助函数
- drawPoint的第二个参数现在是完整的选项对象,因此- style、- rotation和- radius不再被显式传递。
- helpers.getMaximumHeight被- helpers.dom.getMaximumSize替换。
- helpers.getMaximumWidth被- helpers.dom.getMaximumSize替换。
- helpers.clear被重命名为- helpers.clearCanvas,现在它接受- canvas和可选的- ctx作为参数。
- helpers.retinaScale接受可选的第三个参数- forceStyle,它强制覆盖当前画布样式。- forceRatio不再回退到- window.devicePixelRatio,而是默认为- 1。
# 平台更改
- Chart.platform不再是图表使用的平台对象。每个图表实例现在都有一个单独的平台实例。
- Chart.platforms是一个包含两个可用平台类的对象,- BasicPlatform和- DomPlatform。它还包含- BasePlatform,所有平台都必须扩展的类。
- 如果传递的画布是 OffscreenCanvas的实例,则会自动使用BasicPlatform。
- isAttached方法已添加到平台。
# IPlugin 接口更改
- 所有插件钩子都具有统一的签名,包含 3 个参数:chart、args和options。这意味着以下钩子的签名已更改:beforeInit、afterInit、reset、beforeLayout、afterLayout、beforeRender、afterRender、beforeDraw、afterDraw、beforeDatasetsDraw、afterDatasetsDraw、beforeEvent、afterEvent、resize、destroy。
- afterDatasetsUpdate、- afterUpdate、- beforeDatasetsUpdate和- beforeUpdate现在接收- args对象作为第二个参数。- options参数始终是最后一个,因此已从第二个位置移动到第三个位置。
- afterEvent和- beforeEvent现在接收一个包装的- event作为第二个参数的- event属性。原始事件可以通过- args.event.native获取。
- 初始 resize不再是静默的。这意味着resize事件可以在beforeInit和afterInit之间触发。
- 新的钩子:install、start、stop和uninstall
- afterEvent应通过将- args.changed设置为 true 来通知需要渲染的更改。因为- args与所有插件共享,所以它应该只设置为 true,而不是 false。
← 4.x 迁移指南