feat: 优化 useTradingView 函数,深拷贝初始化选项和用户选项以避免引用问题
This commit is contained in:
@@ -2,7 +2,7 @@ import type { Awaitable } from "@vueuse/core";
|
|||||||
import type { ChartOptions, DeepPartial, IChartApi, ISeriesApi, LayoutOptions, OhlcData, SeriesDataItemTypeMap, SeriesType } from "lightweight-charts";
|
import type { ChartOptions, DeepPartial, IChartApi, ISeriesApi, LayoutOptions, OhlcData, SeriesDataItemTypeMap, SeriesType } from "lightweight-charts";
|
||||||
import type { ThemeMode } from "./useTheme";
|
import type { ThemeMode } from "./useTheme";
|
||||||
import { AreaSeries, BarSeries, BaselineSeries, CandlestickSeries, ColorType, createChart, HistogramSeries, LineSeries } from "lightweight-charts";
|
import { AreaSeries, BarSeries, BaselineSeries, CandlestickSeries, ColorType, createChart, HistogramSeries, LineSeries } from "lightweight-charts";
|
||||||
import { mergeWith } from "lodash-es";
|
import { cloneDeep, mergeWith } from "lodash-es";
|
||||||
|
|
||||||
export type Series = "Area" | "Bar" | "Baseline" | "Candlestick" | "Histogram" | "Line";
|
export type Series = "Area" | "Bar" | "Baseline" | "Candlestick" | "Histogram" | "Line";
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ function getChartSeriesDefinition(type: Series) {
|
|||||||
const { isDark } = useTheme();
|
const { isDark } = useTheme();
|
||||||
|
|
||||||
export function useTradingView(target: MaybeRefOrGetter<HTMLElement | null>, options?: TradingViewOptions) {
|
export function useTradingView(target: MaybeRefOrGetter<HTMLElement | null>, options?: TradingViewOptions) {
|
||||||
const opts: Required<TradingViewOptions> = mergeWith(initializeOptions, options);
|
const opts: Required<TradingViewOptions> = mergeWith(cloneDeep(initializeOptions), cloneDeep(options));
|
||||||
const chart = ref<IChartApi | null>(null);
|
const chart = ref<IChartApi | null>(null);
|
||||||
const chartSeriesDefinition = getChartSeriesDefinition(opts.type);
|
const chartSeriesDefinition = getChartSeriesDefinition(opts.type);
|
||||||
const chartEl = ref<HTMLElement | null>(null);
|
const chartEl = ref<HTMLElement | null>(null);
|
||||||
|
|||||||
Reference in New Issue
Block a user