首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[material ui],[redux]

[material ui],[redux]
EN

Stack Overflow用户
提问于 2017-04-25 02:37:14
回答 3查看 7K关注 0票数 11

我从后端请求数据。数据是礼物数据和人数据。

我的目标是实现把礼物和人联系起来。每个人都接受一份礼物。

我使用material-uiredux-form包。

person数据树类似于:

代码语言:javascript
复制
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来保存人员数据。

我的代码如下:

代码语言:javascript
复制
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'/>

我的问题可能在这段代码中。

我用

代码语言:javascript
复制
  <MenuItem  value='09090' primaryText='hahah'/>
  <MenuItem  value='09090' primaryText='hahah'/>
  <MenuItem  value='09090' primaryText='hahah'/>

替换代码

代码语言:javascript
复制
 {member.hobbies.map( (item,keyIndex) =>
                     <MenuItem  key={keyIndex} value={keyIndex} primaryText='hahah'/>

浏览器呈现良好。

我想要实现动态选择的选择。

总之,可以实现我的目标是好的。如果你读了我的描述后不明白这个问题。我将再次编辑这个问题。

EN

回答 3

Stack Overflow用户

发布于 2018-01-26 16:45:29

当应用程序加载时,member.hobbies问题还没有定义。如果未定义,请尝试声明一个变量以将此数组设置为null:

代码语言:javascript
复制
const hobbies = member.hobbies || []

然后:

代码语言:javascript
复制
{hobbies.map( (item,keyIndex) =>
                 <MenuItem  key={keyIndex} value={keyIndex} primaryText='hahah'/>
票数 2
EN

Stack Overflow用户

发布于 2017-05-03 20:28:11

您知道,控制台显示hobbies是未定义的。从调试fields开始。在console.log(fields); in renderMembers之后你会看到什么?

票数 0
EN

Stack Overflow用户

发布于 2019-03-12 11:04:35

希望下面的片段能帮到你,

代码语言:javascript
复制
{this.props.data.map((e, keyIndex) => {
return (<MenuItem key={keyIndex} value={e.warehouseId}>{e.name}</MenuItem>);

}}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43600649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档