关于道具(商店)改变做

时间:2017-09-14 13:30:08

标签: reactjs redux store

我有一个名为参数的商店对象(使用connect与我的JAVA API交互的React-Redux应用程序)。

当我更新输入复选框ect ...

时,此对象在另一个组件中更新

在我的新组件中,我有一个"另存为模板"按钮,在经过一些处理后将此Object作为Json发送到我的API。

我现在想要使用任何奇怪的功能对我的新组件中的此对象(参数)进行CATCH更改。

这样我就可以运行一系列"如果"对它进行测试,查看是否缺少某些输入,并隐藏或灰显"另存为模板"相应的按钮。

这可能吗?

componentDidMount() {

}

componentWillReceiveProps() {

}

似乎没什么帮助。

1 个答案:

答案 0 :(得分:2)

是的,这是我必须使用几次的模式,我使用lodash.isEqual来处理它。

import { isEqual as _isEqual } from "lodash"

假设您在商店中有一个参数对象,并且您在mapStateToProps中的组件中正在观看它(或者您无法访问它):

const mapStateToProps = (state) => ({
    parameters: state.someApp.parameters,
});

然后,您可以检查componentWillReceiveProps中是否有任何更改:

componentWillReceiveProps(nextProps) {
    if(!_isEqual(this.props.parameters, nextProps.parameters)) {
      this.props.sendSomeRequestWithParameters(nextProps.parameters)
    }
}