首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去反弹mobx-react和props

去反弹mobx-react和props
EN

Stack Overflow用户
提问于 2020-04-02 15:05:17
回答 1查看 307关注 0票数 0

我正在尝试揭穿方法调用:"chart.calculateChartData(props.answers)“。

我尝试过:- autorun - reaction - use-debounce from a react lib。- calculateChartData中的setTimeout

每种解决方案都会导致更新周期,或者不起作用,因为MobX不是不可变的。

有谁能给点提示吗?

代码语言:javascript
复制
function QuantificationChart(props: QuantificationChartProps) {
    const {t} = useTranslation();

    const rootStore = useRootStore();
    const chart = rootStore.formulaStore.getChart<Chart>(Chart.chartName);
    const data = chart.calculateChartData(props.answers);
代码语言:javascript
复制
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合作的第一个项目

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-02 16:58:36

找到了解决方案。似乎起作用了:

基于:https://mobx-react.js.org/recipes-effects

代码语言:javascript
复制
    const [data, setData] = React.useState(chart.calculateChartData(props.answers));

    React.useEffect(
        () =>
            autorun(() => {
                setData(chart.calculateChartData(props.answers));
            }, {delay: 1000}),
        [],
    );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60985952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档