gpt4 book ai didi

reactjs - 将 redux-form 迁移到 v6、onBlur 和 onChange 函数

转载 作者:行者123 更新时间:2023-12-03 13:31:58 27 4
gpt4 key购买 nike

我正在将 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,这是通过分派(dispatch)操作来完成的。例如,我必须这样做才能获取地址。在这些组件中,我必须连接我的商店,因此它会连接多次。

我尝试将自定义函数从父组件传递到 Field 组件,如下所示:

<Field
type="text"
name="user_zipcode"
component={Zipcode}
onBlurFunction={this._myBlurFunction}
/>

并从 props 中获取组件中的两个函数:

...
onBlur={() => {
input.onBlurFunction();
input.onBlur();
}}
...

由于新的 React warning,这无法正常工作。 .

有更好的方法吗?

最佳答案

我最终为每个具有 onChange 或 onBlur 函数的表单字段创建了一个自定义组件。通过这种方式,您可以运行这两个函数,因此所有默认的 redux-form 操作都会被调用。

// Licenceplate-component

export default class Licenceplate extends Component {

_handleBlur = ({ currentTarget: { value } }) => {
// my blur function
}

render() {
const {
input,
meta: { touched, error }
} = this.props;

return (
<div className={styles.wrapper}>
<input
{...input}
type="text"
onBlur={
e => input.onBlur(this._handleBlur(e))
}
/>

</div>
);
}
}


// In my form-component
<Field
component={Licenceplate}
name="car_licenceplate"
type="text"
/>

关于reactjs - 将 redux-form 迁移到 v6、onBlur 和 onChange 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506093/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com