gpt4 book ai didi

reactjs - 一个组件中的多个表单无法识别表单和初始值属性(redux-form v7.0.4)

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

我在单个组件中创建多个表单,并使用 redux 存储来初始化它们,我在 <form> 元素中定义表单的 name 属性,而不是在 reduxForm() 帮助器中,它记录在这里...

How to embed the same redux-form multiple times on a page?

我正在从“列表”对象创建表单,并使用 mapStateToProps() 将其传递到我的组件。我正在尝试使用 initialValues={} 设置表单的初始值,但 Redux Form 产生以下错误,并要求在 reduxForm() 帮助程序中声明表单...

1) 失败的 prop 类型:prop formForm(ItemInfo) 中被标记为必需,但其值为 undefined

2) 标签上的未知属性 initialValues。从元素中删除此 Prop 。

这似乎与此处提到的问题类似......

https://github.com/erikras/redux-form/issues/28

import _ from 'lodash';
import React, { Component } from 'react';
import { reduxForm, Field } from 'redux-form';
import { connect } from 'react-redux';
import * as actions from '../../../actions';
import {Col} from 'react-grid-system';
import RaisedButton from 'material-ui/RaisedButton';

class ItemInfo extends Component {

renderSingleItem(item){
let theItem = _.map(_.omit(item, '_id'), (value,field) => {
return (
<div key={field}>
<label>{field}</label>
<Field component="input" type="text" name={field} style={{ marginBottom: '5px' }} />
<div className="red-text" style={{ marginBottom: '20px' }}>
</div>
</div>
);
});
return theItem || <div></div>;
}

renderItemInfo() {

if (this.props.listing.listing !== undefined) {
let theItems = _.map(this.props.listing.listing.items, item => {
return (
<Col key={item._id} md={3}>
<form form={`editItemInfo_${item._id}`} initialValues={item}>
{this.renderSingleItem(item)}
<RaisedButton secondary={true} label="Remove Item"/>
<RaisedButton primary={true} label="Update Item"/>
</form>
</Col>
);
});
return theItems || <div></div>;
}

}

render() {
return (
<div className="row">
{this.renderItemInfo()}
</div>
);
}
}

function mapStateToProps({listing}) {
return { listing };
}

ItemInfo = reduxForm({
fields: ["text"],
enableReinitialize: true
})(ItemInfo)

ItemInfo = connect(mapStateToProps,actions)(ItemInfo)

export default ItemInfo

这是返回“列表”对象的示例...

{ _id: 59b5eebd33a3a833b6ac1386,
_user: 59aff09a11011f0cfd8d7666,
location: 'nother',
availability: 'jhkvljh',
price: 9860,
__v: 0,
items:
[ { equipmentType: 'kbj;kj',
make: ';jb',
model: ';;jb',
watts: 9860,
bulb: 'kjbkj',
condition: 'kjbkjb',
_id: 59b5eebd33a3a833b6ac1387 },
{ condition: 'houy',
bulb: 'jhg',
watts: 8907,
model: 'mode',
make: 'maker',
equipmentType: 'smoquip',
_id: 59b5f9cf13b37234ed033a75 } ] }

感谢您的帮助!

最佳答案

我终于通过一些小技巧找到了解决方法。看起来这一部分是 Redux Form 的错误,一部分是我最初实现的错误。


正确实现

正如 Redux Form 创建者 @erikras 所详述... enter image description here https://github.com/erikras/redux-form/issues/28

表单配置参数需要传递给装饰组件而不是jsx <form>成分。为此,我将表单重构为导入的子组件并映射到这些组件上......

 renderItemForms() {
if (this.props.listing.listing !== undefined) {
return _.map(this.props.listing.listing.items, item => {
return (
<ItemInfo form={`editItemInfo_${item._id}`} initialValues={item} key={item._id} item={item} />
);
});
}
}



Redux 表单错误

上述实现会将您的表单正确连接到 redux 存储,但它仍然会创建一个“失败的 prop 类型: Prop 表单被标记为必需” 错误,这会破坏您的 View 。我找到的解决方案是将任何随机字符串粘贴在 redux-form 的“form”属性中防止错误的选项...

ItemInfo = reduxForm({
form: 'any random string here',
fields: ["text"],
enableReinitialize: true
})(ItemInfo)

initialValues 的第二条错误消息仅在第一个“表单参数”错误之后,所以现在一切都没有错误,并且在 Redux 开发工具中我可以确认内联表单属性正在覆盖 reduxForm() 中的属性选项。现在,redux 存储已使用正确的“表单名称/id”成功管理表单...

enter image description here



我希望这可以帮助其他人避免轻微的头痛。请原谅我上面的解释中任何不正确的术语,我仍然是 Redux/React 菜鸟,但如果有人想要更多详细信息,我很乐意提供有关我的实现的更多详细信息。

关于reactjs - 一个组件中的多个表单无法识别表单和初始值属性(redux-form v7.0.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46182829/

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