跳到主要内容

API 参考

@keisen-charts/react@keisen-charts/vue 的用户面契约。有疑问时以 packages/*/src 中的 TypeScript 类型为准。

安装

bun add @keisen-charts/react # 或 @keisen-charts/vue
# peer: react@^18 || ^19 / vue@^3.5
# 运行时依赖 @keisen-charts/core 会随包安装

KeisenChart props

共享的数据 / 外观 props(React props 与 Vue props):

Prop类型说明
dataKlineBar[]受控静态 K 线
getDataGetDataFn按需拉历史
onSubscribeOnSubscribeFn实时订阅;可返回 unsubscribe
resolutionResolution默认 "1"
symbolstring品种 id
themeThemeInputpreset id、完整定义或 token 覆盖
modeThemeMode"light" | "dark"(store 默认 "dark"
upDownUpDownScheme"green-up" | "red-up"(store 默认 "green-up"
timezoneKlineTimezone"local" | "UTC" | IANA(默认 "local"
localestringlocale id,如 "zh-CN"(默认 "zh-CN"
priceFormatPriceFormat主图价格文案(默认 { type: "price" }
showDataPanelboolean十字线信息面板,默认 true

布局:

ReactVue
header?: ReactNodeslot header
children?: ReactNodeslot default

受控回调(React → Vue)

React propVue emitPayload
onResolutionChangeresolution-changeResolution
onThemeChangetheme-changeThemeInput
onModeChangemode-changeThemeMode
onUpDownChangeup-down-changeUpDownScheme
onTimezoneChangetimezone-changeKlineTimezone
onLocaleChangelocale-changestring
onPointerMovepointer-moveChartPointerInfo | null
onPointerDownpointer-downChartPointerInfo
onPointerUppointer-upChartPointerInfo
onClickclickChartPointerInfo

React 将变更 / 指针处理写成 props;Vue 对应为 emits(无 on* props)。

Hooks / Composables

名称用途
useKlineData读 / 改当前 ChartDataStatedataappendBarsreplaceKlineprependBars 等)
useKlineResolution读/写 resolution
useKlineThemetheme / mode / upDown / 解析后的 colors
useKlineTimezone时区
useKlineLocalelocale + messages

必须在 KeisenChart 子树内调用(如 header)。Vue 在对应位置返回 Ref / ComputedRef,React 返回普通值。

类型速查

type KlineBar = { t: number; o: number; h: number; l: number; c: number; v: number }

type Resolution = `${number}` | "1D" | "1W" | "1M"

type GetDataFn = (params: {
resolution: Resolution
symbol?: string
countBack?: number
from?: number
to?: number
}) => Promise<KlineBar[]>

type OnSubscribeFn = (
params: { resolution: Resolution; symbol?: string },
emit: {
bar: (bar: KlineBar) => void
append: (bar: KlineBar) => void
updateLast: (bar: KlineBar) => void
replace: (bars: KlineBar[]) => void
},
) => void | (() => void)

type ThemeMode = "light" | "dark"
type UpDownScheme = "green-up" | "red-up"
type ThemeInput = string | ThemeDefinition | Partial<ThemeTokens>
type KlineTimezone = "local" | "UTC" | (string & {})

type PriceFormatter = (value: number, ctx: PriceFormatContext) => string
type PriceFormat =
| {
type: "price"
minMove?: number
precision?: number
compactTiny?: boolean
useGrouping?: boolean
}
| { type: "custom"; minMove?: number; formatter: PriceFormatter }

type ChartPointerInfo = {
chartId: string
x: number
y: number
timestamp: number
value: number
barIndex: number
pointerType?: string
}

扩展入口

  • registerTheme / registerLocale
  • registerIndicator / createIndicatorChart
  • createPriceFormatter / formatCompactTiny / formatPrice
  • @keisen-charts/react/toolkit / @keisen-charts/vue/toolkituseKlineIndicatoruseDrawOverlay(设置面板 / 工具条 UI 见指南)