简体   繁体   English

具有动态值的 MenuItem 在 Material UI React 中不起作用

[英]MenuItem with dynamic value is not working in Material UI React

I am using Select, in Material UI for React, I always get undefined when i select from selector.我在 React 的 Material UI 中使用 Select,当我从选择器中选择时,我总是未定义。 It always happen when we use MenuItem value dynamic .当我们使用MenuItemdynamic时总是会发生这种情况。 But if i use static value instead of using dynamic, it works well.但是如果我使用静态值而不是动态值,它运行良好。 But I have to use in dynamic way with .map operator.但我必须以动态方式使用.map运算符。

Please provide the solution which works well in dynamic value.请提供在动态值中运行良好的解决方案。

Like this -> <MenuItem value={SOME-DYNAMIC-VALUE} />像这样 -> <MenuItem value={SOME-DYNAMIC-VALUE} />

this.state.selectedTagetIdentity = '';

onTargetIdentityChange = (event) => {
  this.setState({ selectedTagetIdentity: event.target.value }); // its undefined always 
}

const splitedIdenties = { 
 'abc1' :[{ id: 12, age: '2' },{ id: 13, age: '3' }], 
 'abc2': [{ id: 14, age: '22' },{ id: 15, age: '25' }] 
};
<Select value={selectedTagetIdentity} onChange={onTargetIdentityChange}>
  {Object.keys(splitedIdenties).map((identityTypeKey, identityTypeIndex) => 
    <div key={identityTypeIndex}>
      <ListSubheader>{identityTypeKey}</ListSubheader>
      {splitedIdenties[identityTypeKey].map(identity => 
        <MenuItem key={identity.id} value={identity.id}>{identity.age}</MenuItem>
        )}
    </div>
  )}
</Select>

See here it's not working看到这里它不起作用

The issue is you are wrapping MenuItem with div .问题是您正在用div包装MenuItem MenuItem elements must be direct descendants of material-ui Select : MenuItem元素必须是 material-ui Select直接后代:

⚠️The MenuItem elements must be direct descendants when native is false. ⚠️当 native 为 false 时,MenuItem 元素必须是直接后代。

To fix that, remove the wrapping div:要解决这个问题,请删除包装 div:

<Select value={personName} onChange={onTargetIdentityChange}>
    {Object.keys(splitedIdenties).map((identityTypeKey, identityTypeIndex) =>{
    let children = [];

    children.push(<ListSubheader>{identityTypeKey}</ListSubheader>); 
      splitedIdenties[identityTypeKey].forEach(identity => {
        children.push(<MenuItem key={identity.id} value={identity.id}>{identity.age}</MenuItem>)
      })

      return children;
    }
  )}
</Select>

编辑隐形背景

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM