【问题标题】:Get selected MenuItem props from Select (Material UI)从 Select (Material UI) 中获取选定的 MenuItem 道具
【发布时间】:2020-06-13 01:12:49
【问题描述】:

我的显示组件

const myComponent = ({ title, data, errors, onSubmit, groups }) => {

  const [state, setState] = useState(
    Object.assign(
      {
        username: "",
        password: "",
        group: "",
        isAdmin: false,
      },
      data || {}
    )
const handleGroupChange = (event) => {

    console.log(event.target);
    setState({
      group: event.target.value
    })
  }

return (
<FormControl className={styles.formControl}>
          <InputLabel id="group-select">Groups</InputLabel>
          <Select
            id="group-select"  
            value={state.group}
            onChange={handleGroupChange}
            >
            {
              groups.length > 0 ? (
                groups.map((group) => {
                  console.log(group);
                  return <MenuItem key={group._id} id={group._id} value={group.name}>{group.name}</MenuItem>
              })
              ) : <MenuItem>No Groups</MenuItem>
            }
            </Select>
      </FormControl>
)
}

行为

groups是通过容器组件传递的,我可以访问event.target.value

{ value --> group.name, name --> undefined }

但是 我无法访问 id 道具。我希望 idvalue 道具都存储在 state.group 中。我尝试使用MenuItemoption 元素和NativeSelect。我怎样才能做到这一点?

【问题讨论】:

    标签: javascript reactjs material-ui


    【解决方案1】:

    您可以从每个菜单项中获取 id 并以这样的状态存储 this.setState({ 组:{ id:even.target.id,值:even.target.value }) 在 handleGroupChange 内部,并确保将状态组更改为对象类型

    【讨论】:

    • event.target.id 未定义。 event.target 只有value & name
    • 好的,在 handleGroupChange 中使用 e.target.value 过滤组数组,e.target.value 是组名,您将拥有整个对象,然后您可以将整个对象分配到状态并在任何您想要的地方使用该值到
    猜你喜欢
    • 1970-01-01
    • 2020-07-12
    • 2020-07-10
    • 2021-11-25
    • 2018-10-10
    • 2018-08-18
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    相关资源
    最近更新 更多