我有2个班级
一个是反应组件,第二个是标准类(验证)。
在Validation类中添加作为反应状态的元素。
state.formValidator = new FormValidation({id: 'install'});
this.setState(state);
FormValidation类作为属性具有Input valdiation的类。当某些输入更新时,FormValidation isValid属性也会更新。
在我的反应组件中,我可以看到它。例如,当我在input元素上添加事件时。更新后,我调用函数来显示state.formValidator
isValid属性值是否正确。但我不能强迫反应自动检测到这种变化。
何时
this.state.formValidator.isValid
值正在被其他类/组件更改我无法在我的React组件中检测到此更改。
方法componentWillUpdate或componentWillReceiveProps是沉默的。
如何强制更新此组件?
我知道我可以为onUpdate上的每个输入事件添加,然后更新我的React组件。但更好的方法是在没有触发器的情况下使用每个输入。
有可能吗?
答案 0 :(得分:0)
React通过简单的===
检查来检查状态更改。因此,如果只更改状态中对象的属性,则不会重新渲染,因为对象通过引用相等进行比较,并且更改对象中的属性不会更改其引用ID。
出于这个原因,在你的州里拥有物品通常不是一个好主意 - 你的州应该是平坦的。
您可以通过从组件调用this.forceUpdate()
来强制组件在发生特定情况时进行渲染,但除非非常需要,否则不鼓励这样做。
第二个选项是让您的组件的呈现状态取决于您的formValidator.isValid
属性,或者将formValidator
保留在其他位置,并且只将isValid
属性复制到您的州。