[英]Set redux-form Field value based on TWO other fields
因此,以redux形式,我已经看到了许多基于另一个Field
来更新Field
值的方法。 我的具体情况正在更新Field
基于两种不同的价值Fields
。
建议实现此目的的两种流行方法是1.) redux-form的规范化器 ,以及2.)在调用Field1
的onChange
时,手动分派redux-form的change方法来更改Field3
的值。 这两个解决方案似乎都不适用于我,原因如下:
规范化器 :假设我有3个字段Field1
, Field2
和Field3
。 当更改Field1
或Field2
中的任何一个时,我需要设置Field3
的值。 更改Field1
时,也会自动设置Field2
的值 。 假设我在Field1
上定义了一个规范化器,用于检查整个表单的值。 在这种情况下,在我的规范化函数中, Field1
的值得到了更新,但是Field2
保留了它的旧值。 这可能是来自redux-form的一些奇怪行为。
从Field1
或Field2
的onChange
内部在Field3
上手动调度redux-form的change方法 -问题是,如果我尝试在Field1
的onChange
内部访问Field1
的值,则该方法将传递给Field1
的onChange
保留Field1
的旧值。 因此,我无法根据Field1
的新值可靠地设置Field3
的值。
关于如何解决此问题的任何建议都将有所帮助。 谢谢!
尝试这个:
为field3创建一个组件(例如Field3),并以这种形式使用它
<Field name="field3" component={Field3} />
在Field3组件中,我们还将field1和field2的值注入到Field3组件中。 这样,无论何时更新组件,我们都可以检查是否是由于field1或field2引起的,然后我们相应地更新field3:
import React from 'react';
import { formValues } from 'redux-form';
class Field3 extends React.Component {
componentDidUpdate(prevProps) {
if (this.props.field1 !== prevProps.field1 || this.props.field2 !== prevProps.field2) {
// field1 or field2 has changed. update field3
this.props.input.onChange('new value goes here')
}
}
render() {
// your input here
}
}
export default formValues('field1', 'field2')(Field3);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.