【问题标题】:React material UI close when the value selected - multi select选择值时反应材质UI关闭 - 多选
【发布时间】:2021-03-03 15:45:24
【问题描述】:

我正在使用 React Material UI 来构建我的组件。我正在使用反应多选从用户那里获取多个值。

<FormControl className={clsx(classes.formControl, classes.noLabel)}>
        <Select
          multiple
          value={personName}
          onChange={handleChange}
          onClick={(e) => {
            e.stopPropagation();
            e.preventDefault();
          }}
          input={<Input />}
          renderValue={(selected) => {
            if (selected.length === 0) {
              return <em>Placeholder</em>;
            }

            return selected.join(", ");
          }}
          MenuProps={MenuProps}
          inputProps={{ "aria-label": "Without label" }}
        >
          <MenuItem disabled value="">
            <em>Placeholder</em>
          </MenuItem>
          {names.map((name) => (
            <MenuItem
              key={name}
              value={name}
              style={getStyles(name, personName, theme)}
            >
              {name}
            </MenuItem>
          ))}
        </Select>
      </FormControl>

一切正常。但是当用户选择值时,我需要关闭下拉菜单。但是现在它只有在触发模糊事件时才会关闭。

当用户选择任何值时,是否有任何选项可以关闭下拉菜单?

提前致谢

【问题讨论】:

    标签: react-native material-ui react-material


    【解决方案1】:

    也许你可以通过使用 useRef 钩子来解决这个问题。 添加对选择的引用,在更改处理程序中,您可以尝试使用 ref.current.close() 将其关闭。

    import React , {useRef} from 'react';
    const ref = useRef()
    <FormControl className={clsx(classes.formControl, classes.noLabel)}>
            <Select
              multiple
              value={personName}
              onChange={handleChange}
              ref={ref}
              onClick={(e) => {
                e.stopPropagation();
                e.preventDefault();
              }}
              input={<Input />}
              renderValue={(selected) => {
                if (selected.length === 0) {
                  return <em>Placeholder</em>;
                }
    
                return selected.join(", ");
              }}
              MenuProps={MenuProps}
              inputProps={{ "aria-label": "Without label" }}
            >
              <MenuItem disabled value="">
                <em>Placeholder</em>
              </MenuItem>
              {names.map((name) => (
                <MenuItem
                  key={name}
                  value={name}
                  style={getStyles(name, personName, theme)}
                >
                  {name}
                </MenuItem>
              ))}
            </Select>
          </FormControl>
          
          const handleChange = (event) =>{
          ....
          ref.current.close();
          }

    【讨论】:

    • 它不起作用,因为设置为 &lt;Select /&gt; 的 ref 指的是 MuiInputBase 元素,其中 close() 函数不存在。以编程方式关闭下拉菜单的唯一选项是使用 open 道具。
    猜你喜欢
    • 2017-11-15
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多