フレームワークアダプター
React、Vue、Angular、Svelte、SolidJSからSixtyfold Chartsのラインおよび株価チャートを使用します。
Sixtyfoldのフレームワークパッケージは同じLineChartおよびStockChartエンジンをラップする薄いライフサイクルアダプターです。レンダリングロジックを複製したり、データを再構成したり、ランタイムテレメトリを追加したり、あらゆるチャートをアプリケーションに取り込んだりしません。
使用するエンジンとアダプターを1つインストールします。/lineまたは/stockのエントリーポイントのみをインポートしてください:
pnpm add @sixtyfold/react@next @sixtyfold/line@nextimport { SixtyfoldLineChart } from "@sixtyfold/react/line";reactをvue、angular、svelte、またはsolidに置き換えてください。株式チャートの場合は、@sixtyfold/stockをインストールし、/stockをインポートしてください。チャートエンジンはアダプターのオプショナルなピア依存関係であるため、ラインチャートをインストールしても株式チャートはインストールされません。
共有アダプター契約
すべてのアダプターはコンポーネントのマウント後にチャートを作成し、initialize()を待機し、リアクティブな入力を適用し、アンマウント時にdestroy()を呼び出します。これによりチャートWorkerが終了し、オブザーバー、リスナー、および大きなバッファ参照が解放されます。SSR中はコンポーネントはキャンバスホストのみを出力するため、サーバー側でチャートピクセルを描画する必要がある場合は@sixtyfold/ssrを使用してください。
各アダプターは準備完了、構築、レンダラー、およびオーバーレイのエラーに加え、レンダリング統計を報告します。ラインアダプターはさらにSeriesVisibilityChangeEventを報告します。各フレームワークは従来のrefまたはコンポーネントAPIを通じて基盤となるLineChartまたはStockChartインスタンスを公開するため、稀な命令的操作も引き続き利用可能です。
チャート障害を処理する
アダプターのエラーフックはunknownを受け入れます。なぜならJavaScriptの構築エラーは特定のクラスを使用する必要がないためです。Sixtyfoldレンダラーから発生する障害はChartRendererErrorインスタンスです。オーバーレイの解決またはレンダラーへの配送の障害はChartOverlayErrorインスタンスです。構造化フィールドを読む前に値の型を絞ってください:
import {
ChartOverlayError,
ChartRendererError,
} from "@sixtyfold/line";
export function reportChartError(error: unknown) {
if (error instanceof ChartRendererError) {
console.error(error.phase, error.message);
return;
}
if (error instanceof ChartOverlayError) {
console.error("Overlay sources failed:", error.sources);
return;
}
console.error(error);
}ストック専用アプリケーションでは@sixtyfold/stockから同じインポートを使用してください。error.phaseは"initialization"または"runtime"のいずれかです。レンダラーの障害はそのチャートインスタンスを破壊します。アプリケーションが回復を選ぶ場合はアダプターを再マウントしてください。オーバーレイの障害は致命的ではありません: 成功した項目はインストールされたままで、要求した全項目が失敗した場合は以前のオーバーレイが維持されます。
大量の型付き配列はWorkerへ転送されます。各データオブジェクトをワンショットとして扱ってください: その場で変更せず、各更新ごとに新しいバッファを持つ新しいオブジェクトを割り当ててください。これにより数百万ポイントのデータセットでもゼロコピー経路が維持されます。
React
import { useMemo, useRef } from "react";
import {
SixtyfoldLineChart,
type LineChartHandle,
} from "@sixtyfold/react/line";
export function Signals() {
const chartRef = useRef<LineChartHandle>(null);
const data = useMemo(() => ({
x: new Float64Array([0, 1, 2, 3]),
y: new Float64Array([3, 7, 4, 9]),
length: 4,
}), []);
return (
<SixtyfoldLineChart
ref={chartRef}
data={data}
aria-label="Signal history"
onError={console.error}
/>
);
}コンポーネントは通常の canvas 属性を受け取ります。ref は ref.current?.chart を公開します。初期構築はマイクロタスク遅延されるため、React Strict Mode の開発ライフサイクルプローブが初期データを二重に渡すことはありません。
Vue
<script setup lang="ts">
import { shallowRef } from "vue";
import { SixtyfoldLineChart } from "@sixtyfold/vue/line";
const data = shallowRef({
x: new Float64Array([0, 1, 2, 3]),
y: new Float64Array([3, 7, 4, 9]),
length: 4,
});
</script>
<template>
<SixtyfoldLineChart
:data="data"
aria-label="Signal history"
@error="console.error"
/>
</template>大量データにはVueの深いプロキシの代わりにshallowRefまたはmarkRawを使用してください。コンポーネントはready、error、statsを発行します;折れ線グラフはseriesVisibilityChangeも発行します。テンプレートrefは浅いchart refを公開します。
Angular
Angular 20–22 パッケージはスタンドアロンコンポーネントと Angular Package Format の二次エントリポイントを使用します。
import { Component } from "@angular/core";
import { SixtyfoldLineChartComponent } from "@sixtyfold/angular/line";
@Component({
standalone: true,
imports: [SixtyfoldLineChartComponent],
template: `
<sixtyfold-line-chart
[data]="data"
ariaLabel="Signal history"
(chartError)="reportError($event)"
/>
`,
})
export class Signals {
data = {
x: new Float64Array([0, 1, 2, 3]),
y: new Float64Array([3, 7, 4, 9]),
length: 4,
};
reportError(error: unknown) {
console.error(error);
}
}入力は共通テーブルに加え、アクセシビリティの重点フィールドと canvasAttributes に従います。出力は chartReady、chartError、stats であり、ラインコンポーネントはさらに seriesVisibilityChange を発行します。コンポーネント参照は公開された chart を公開します。
Angular のアプリケーションビルダーはパッケージ所有の Vite Worker URL を変換しません。アプリケーションで使用するエンジンをビルドターゲットの assets 配列に angular.json 内で追加してください:
[
{ "glob": "**/*", "input": "node_modules/@sixtyfold/line/dist/assets", "output": "assets" },
{ "glob": "**/*", "input": "node_modules/@sixtyfold/stock/dist/assets", "output": "assets" }
]チャートの構築は isPlatformBrowser で保護されているため、Angular SSR はブラウザグローバルを触りません。
Svelte
<script lang="ts">
import LineChart from "@sixtyfold/svelte/line";
const data = {
x: new Float64Array([0, 1, 2, 3]),
y: new Float64Array([3, 7, 4, 9]),
length: 4,
};
</script>
<LineChart
{data}
ariaLabel="Signal history"
onError={console.error}
/>chart は命令的アクセスのためにバインド可能です。追加の Svelte プロップは折れ線グラフ用の onReady、onError、onStats、onSeriesVisibilityChange、および canvasClass、canvasStyle、ariaLabel です。
SolidJS
import { SixtyfoldLineChart } from "@sixtyfold/solid/line";
const data = {
x: new Float64Array([0, 1, 2, 3]),
y: new Float64Array([3, 7, 4, 9]),
length: 4,
};
export function Signals() {
return (
<SixtyfoldLineChart
data={data}
canvasProps={{ "aria-label": "Signal history" }}
chartRef={(chart) => console.log(chart)}
onError={console.error}
/>
);
}chartRef はマウントされたチャートを受け取り、クリーンアップ時に null を呼び出します。canvasProps はネイティブのキャンバス属性を渡します。他の全ての props は共通の契約に従います。
完全な例
公開リポジトリには、各対応フレームワーク向けの最小限のレスポンシブアプリケーションが含まれます。各アプリケーションは、パッケージ、データ形式、チャートの設定、およびラインチャートとストックチャートの両方を再現するために必要なクリーンアップを示します。