2017-09-14 69 views
1

我有一个商店对象(React-Redux应用程序使用连接与我的JAVA API交互)称为参数。关于道具(商店)更改

这个对象在另一个组件更新,当我更新的输入框中打勾等...

在我的新元件,我有一个“另存为模板”按钮,完成某些处理后发送该对象为JSON我API。

我想现在使用任何奇数函数在我的新组件中CATCH更改为此对象(参数)。

为了让我可以对其执行一系列“if”测试,请查看是否有某些输入丢失,并相应地隐藏或灰掉“另存为模板”按钮。

这可能吗?

componentDidMount() { 

} 

componentWillReceiveProps() { 

} 

不似乎有很大帮助。

+1

您可以发布您的代码吗? –

+1

从它的声音中,你可以使用'render()'函数完成这一切。 – Aaron

+1

您可以验证渲染方法中的对象,并在验证失败时将该按钮渲染为暗点。无需为此使用生命周期方法。 – trixn

回答

2

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

import { isEqual as _isEqual } from "lodash" 

假设你有一个参数对象在您存储和你看它在mapStateToProps您的组件,例如(或其他但是你要访问它):

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

你然后可以检查您的组件是否有任何更改将收到您的代码:

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

这非常酷,谢谢。在这种情况下,我可以简单地声明两个布尔值(实际上有两个参数对象),在我的渲染和返回之间,并在其中存储对我的“if”测试电池的答案。一旦在我的按钮的渲染内,我可以根据if(booleanOne || booleanTWO)决定我决定显示哪两组按钮。明白了吗? – tatsu