Debounce Mobx-реагировать и реквизит - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь отменить вызов метода: "chart.calculateChartData (props.answers)".

Я попытался: - автозапуск - реакция - использовать-отменить из библиотеки реагировать. - setTimeout в CalculateChartData

Каждое решение приводило к циклу обновления или не работало, потому что MobX не является неизменным.

Есть кто-то подсказка?

function QuantificationChart(props: QuantificationChartProps) {
    const {t} = useTranslation();

    const rootStore = useRootStore();
    const chart = rootStore.formulaStore.getChart<Chart>(Chart.chartName);
    const data = chart.calculateChartData(props.answers);
calculateChartData = (questionData: { [id: string]: number; } = {}) => {
        let chartData = [];
        for (let i = 0; i < this.numberOfYears + 1; ++i) {
            let customData = {...questionData, "year" : i};
            let chartEntry = {
                cost: this.rootStore.formulaStore.calculateFormula(this.cost.formula, customData),
                earn: this.rootStore.formulaStore.calculateFormula(this.earn.formula, customData),
                sum: 0
            };
            chartEntry.sum = (chartEntry.earn - chartEntry.cost) + (chartData[i - 1]?.sum || 0);
            chartData.push(chartEntry);
        }
        return chartData;
    };

Подсказка: это мой первый проект с MobX

1 Ответ

0 голосов
/ 02 апреля 2020

Нашел решение. Кажется, работает:

На основе: https://mobx-react.js.org/recipes-effects

    const [data, setData] = React.useState(chart.calculateChartData(props.answers));

    React.useEffect(
        () =>
            autorun(() => {
                setData(chart.calculateChartData(props.answers));
            }, {delay: 1000}),
        [],
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...