我有一个名为参数的商店对象(使用connect与我的JAVA API交互的React-Redux应用程序)。
当我更新输入复选框ect ...
时,此对象在另一个组件中更新在我的新组件中,我有一个"另存为模板"按钮,在经过一些处理后将此Object作为Json发送到我的API。
我现在想要使用任何奇怪的功能对我的新组件中的此对象(参数)进行CATCH更改。
这样我就可以运行一系列"如果"对它进行测试,查看是否缺少某些输入,并隐藏或灰显"另存为模板"相应的按钮。
这可能吗?
componentDidMount() {
}
和
componentWillReceiveProps() {
}
似乎没什么帮助。
答案 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)
}
}