Моя извинения за ошибку. Если метода getIndicator() нет в библиотеке klinecharts, тогда решение может стать сложнее. Чтобы посмотреть, как сохранять и восстанавливать ваше нарисованные индикаторы, вам потребуется некоторый способ отслеживать созданные индикаторы отдельно от библиотеки klinecharts.

Вот один из способов реализации:

1. Создайте массив для хранения информации о созданных индикаторах.
2. При вызове функции createIndicator(), сохраните данный индикатор в массиве.
3. При сохранении индикаторов, сохраните параметры индикаторов из массива созданных индикаторов.

Вот полный код с примером:

import React, { useEffect, useRef } from “react”;
import {
    init,
    dispose,
    Chart,
    Indicator,
} from “klinecharts”;

const figureData = [];
const createdIndicators = [];

function createFigure(chart, { id, points, index, styles }) {
    const indicator = chart.createIndicator(id);
    indicator.update(points, index);

    createdIndicators.push(indicator);

    // Обновление стилей индикатора должно быть осуществлено
    // на основе типа индикатора / фигуры
}

function YourComponent() {
    const chart = useRef<Chart | null>(null);

    useEffect(() => {
        chart.current = init(“klinecharts-container”);
        // Загрузите данные графика и другие настройки здесь

        // Опрос состояния индикаторов каждую секунду
        const intervalId = setInterval(() => {
            if (!chart.current) {
                return;
            }

            figureData.length = 0;
            createdIndicators.forEach((indicator: Indicator) => {
                figureData.push(indicator.params());
            });

            // Сохраните структуру данных с индикаторами, например, в localStorage
            localStorage.setItem(“figureData”, JSON.stringify(figureData));
        }, 1000);

        return () => {
            if (chart.current) {
                dispose(“klinecharts-container”);
            }
            clearInterval(intervalId);
        };
    }, []);

    useEffect(() => {
        // Загрузите сохраненную структуру данных с индикаторами при открытии графика
        const storedFigureData = localStorage.getItem(“figureData”);

        if (storedFigureData) {
            const figures = JSON.parse(storedFigureData);

            // Восстановите фигуры на графике
            figures.forEach((figure) => {
                if (chart.current) {
                    createFigure(chart.current, figure);
                }
            });
        }
    }, []);

    return (
        <div id=“klinecharts-container” style={{ width: “100%”, height: “600px” }}></div>
    );
}

export default YourComponent;


Теперь массив createdIndicators будет использоваться для отслеживания информации о созданных индикаторах. Вам все равно придется модифицировать функцию createFigure и обновление стилей индикаторов в зависимости от типа индикатора/фигуры, который вы используете.

Обратите внимание, что этот подход по-прежнему может быть неполным и иметь некоторые недостатки при работе с библиотекой klinecharts. Если возможно, я рекомендую изучить более подробное руководство и примеры для klinecharts, чтобы найти лучший подход и избежать потенциальных проблем с интеграцией.



1. Добавь типы.
2.  const indicator = chart.createIndicator(id);
    indicator.update(points, index);  Property 'update' does not exist on type 'string'.ts(2339)
3. 
      createdIndicators.forEach((indicator: Indicator) => {
        figureData.push(indicator.params());
      }); Property 'params' does not exist on type 'Indicator<any>'.ts(2339)
