调用父级更新功能的首选方式是哪种?

时间:2018-02-21 17:53:00

标签: javascript reactjs

我有一个React组件<MoneyCounter onChange={this.onCounterChange}>

父组件App自然将onCounterChange传递给MoneyCounterMoneyCounter本身对其内部按钮有多个回调,因此我可以(1)在每个回调中调用this.props.onChange()(这是我不喜欢的选项,我只是称之为在一个知道状态正在更新的中心位置,我可以在componentWillUpdate / componentWillUpdate / componentShouldUpdate中调用它。

现在,首先出现的问题是,如果我在后3个选项中的任何一个中调用它,我的App回调就会调用setState,并将其置于无限循环中。然而,我随后对应用程序中的onCounterChange回调进行了更改,以便在不需要时调用setState,从而修复无限循环错误。

第三个选项实际上覆盖了this.setState中的MoneyCounter,在构造函数中是这样的:

    let oldSet = this.setState;
    this.setState = function() {
        let args = Array.from(arguments);
        args.push(() => {
            this.props.onChange(this.props.unitValue, this.state.count);
        });
        oldSet.apply(this, args);
    }

我已经检查了它并且有效,但它可能不太好。

正确的反应方式是什么?

0 个答案:

没有答案