我从后端请求数据。数据是礼物数据和人数据。
我的目标是实现把礼物和人联系起来。每个人都接受一份礼物。
我使用material-ui和redux-form包。
person数据树类似于:
persons: "
[ {
name:'person1_name',
userID:'person1_userID',
hobbies: persondata -> the same to persons
},
{
name:'person2_name',
userID:'person2_userID',
hobbies: persondata -> the same to persons
},
{
name:'person3_name',
userID:'person3_userID',
hobbies: persondata -> the same to persons
}
]我想得到这个结果:我点击select,3(如果后端人员数据是3个人) person item(选项)显示。
我使用redux状态state.sendGood.driftMemberArray.formData来保存人员数据。
我的代码如下:
import React from 'react'
import {Field, FieldArray, reduxForm } from 'redux-form'
import { connect } from 'react-redux'
import SelectField from 'material-ui/SelectField'
import MenuItem from 'material-ui/MenuItem'
const renderSelectField = ({ input, label, meta: { touched, error }, children, ...custom }) => (
<SelectField
floatingLabelText={label}
errorText={touched && error}
{...input}
onChange={(event, index, value) => input.onChange(value)}
children={children}
{...custom}/>
)
const renderMembers = ({ fields, meta: { touched, error, submitFailed } }) => (
<ul>
{fields.map((member, index) =>
<li key={index}>
<Field name={`${member}.selectMan`} component={renderSelectField} label="select a man">
{member.hobbies.map( (item,keyIndex) =>
<MenuItem key={keyIndex} value={keyIndex} primaryText='hahah'/>
)}
</Field>
</li>
)}
</ul>
)
let NextWeekDriftForm = (props) => {
const { handleSubmit, pristine, reset, submitting} = props;
return (
<form onSubmit={handleSubmit}>
<div>
<FieldArray name="members"component={renderMembers}/>
</div>
</form>
)
}
NextWeekDriftForm = reduxForm({
form: 'NextWeekDriftForm', // a unique identifier for this form
enableReinitialize: true,
})(NextWeekDriftForm)
export default NextWeekDriftForm = connect(
state => ({
initialValues:state.sendGood.driftMemberArray.formData,
})
) (NextWeekDriftForm)因此,错误显示:
TypeError:无法读取未定义的属性“映射”
{member.hobbies.map( (item,keyIndex) => <MenuItem key={keyIndex} value={keyIndex} primaryText='hahah'/>
我的问题可能在这段代码中。
我用
<MenuItem value='09090' primaryText='hahah'/>
<MenuItem value='09090' primaryText='hahah'/>
<MenuItem value='09090' primaryText='hahah'/>替换代码
{member.hobbies.map( (item,keyIndex) =>
<MenuItem key={keyIndex} value={keyIndex} primaryText='hahah'/>浏览器呈现良好。
我想要实现动态选择的选择。
总之,可以实现我的目标是好的。如果你读了我的描述后不明白这个问题。我将再次编辑这个问题。
发布于 2018-01-26 16:45:29
当应用程序加载时,member.hobbies问题还没有定义。如果未定义,请尝试声明一个变量以将此数组设置为null:
const hobbies = member.hobbies || []然后:
{hobbies.map( (item,keyIndex) =>
<MenuItem key={keyIndex} value={keyIndex} primaryText='hahah'/>发布于 2017-05-03 20:28:11
您知道,控制台显示hobbies是未定义的。从调试fields开始。在console.log(fields); in renderMembers之后你会看到什么?
发布于 2019-03-12 11:04:35
希望下面的片段能帮到你,
{this.props.data.map((e, keyIndex) => {
return (<MenuItem key={keyIndex} value={e.warehouseId}>{e.name}</MenuItem>);}}
https://stackoverflow.com/questions/43600649
复制相似问题