【发布时间】:2016-11-25 03:44:42
【问题描述】:
我正在将 redux-form 迁移到最新版本 6.0.0rc3。在这个版本中,'fields' 数组消失了,取而代之的是一个 Field 组件(参见http://redux-form.com/6.0.0-rc.3/docs/MigrationGuide.md/)。我曾经像这样扩展 v5 中的默认 onBlur 函数:
const { user_zipcode } = this.props.fields;
onChange={
val => user_zipcode.onChange(this._handleZipcodeChange(val))
}
但是,在新版本中,这不能再这样做了,因为this.props.fields 不存在。
根据我在文档中找到的内容,新方法应该是为每个具有不同功能的表单字段创建一个组件,并在那里扩展 onBlur 功能:
_onBlur() {
// my custom blur-function
}
render() {
const { input, touched, error } = this.props;
return (
<input
className={styles.input}
{...input}
onBlur={() => {
// 2 functions need to be called here
this._onBlur();
input.onBlur();
}}
/>
);
}
这很好,除了我需要为每个需要在模糊事件发生时执行不同操作的字段创建一个新元素。在某些领域,我必须调用一个 API,我通过调度一个动作来做到这一点。例如,我必须这样做才能获得地址。在这些组件中,我必须连接我的商店,所以它会连接很多次。
我试图将我的自定义函数从父组件传递给 Field 组件,如下所示:
<Field
type="text"
name="user_zipcode"
component={Zipcode}
onBlurFunction={this._myBlurFunction}
/>
并从道具中获取我的组件中的两个功能:
...
onBlur={() => {
input.onBlurFunction();
input.onBlur();
}}
...
由于新的React warning,这无法正常工作。
有没有更好的方法来做到这一点?
【问题讨论】:
标签: reactjs redux redux-form