在 OpenHarmony(ArkUI / eTS) 中,“图表联动”通常指:多个图表或视图之间根据同一数据源或交互事件保持同步,例如:
下面按 常见实现方式 + 示例 说明。
OpenHarmony 图表联动的本质是:
状态共享 + 事件驱动
通常使用:
@State / @Link / @Provide / @Consume@ohos/chart 或三方库)思路:
所有图表都依赖同一个 @State 数据对象。
@Entry
@Component
struct ChartLinkDemo {
@State data: number[] = [10, 20, 30, 40]
build() {
Column() {
LineChart({ data: this.data })
BarChart({ data: this.data })
Button('更新数据')
.onClick(() => {
this.data = [20, 30, 10, 50]
})
}
}
}
✅ 点击按钮 → 两个图表同时变化
✅ 无需手动同步
@Entry
@Component
struct ChartClickLink {
@State selectIndex: number = -1
build() {
Column() {
BarChart({
data: [10, 20, 30],
onItemClick: (index: number) => {
this.selectIndex = index
}
})
LineChart({
data: [10, 20, 30],
highlightIndex: this.selectIndex
})
}
}
}
✅ 点击柱形 → 折线图同步高亮
适合 复杂页面 / 多个组件
// 父组件
@Entry
@Component
struct Parent {
@Provide chartData: number[] = [5, 15, 25]
build() {
Column() {
ChildA()
ChildB()
}
}
}
// 子组件 A
@Component
struct ChildA {
@Consume chartData: number[]
build() {
BarChart({ data: this.chartData })
}
}
// 子组件 B
@Component
struct ChildB {
@Consume chartData: number[]
build() {
LineChart({ data: this.chartData })
}
}
✅ 一处修改,多处联动
例如:日期选择 → 所有图表更新
@State date: string = '2024-01-01'
DatePicker({
onChange: (value) => {
this.date = value
this.loadData(value)
}
})
所有图表都依赖 date 或 filteredData
联动方式类似:
setOptionon('click')dispatchAction(如高亮)chart.on('click', (params) => {
otherChart.dispatchAction({
type: 'highlight',
dataIndex: params.dataIndex
})
})
✅ 用 状态驱动,不要手动操作 DOM
✅ 联动逻辑放在 数据层
✅ 复杂联动用 @Provide/@Consume
✅ 交互联动靠 事件回调
如果你能告诉我:
我可以直接给你 可运行代码示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。