【问题标题】:Redux-form Material-UI dropdown not showing dropdown, selectionRedux-form Material-UI 下拉菜单不显示下拉菜单,选择
【发布时间】:2019-03-13 10:10:35
【问题描述】:

我使用 Material-ui select @material-ui/core/Select 和 redux-form 作为 HOC。我已创建表单并出现选择框,但未显示选项。

这是我的组件

import React from "react";
import { Field, reduxForm } from "redux-form";

import SelectField from "@material-ui/core/Select";
import MenuItem from "@material-ui/core/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 Form = props => {
  const { handleSubmit, pristine, reset, submitting } = props;
  return (
    <form onSubmit={handleSubmit}>
      <div>
        <Field
          name="favoriteColor"
          component={renderSelectField}
          label="Favorite Color"
        >
          <MenuItem value="1" primaryText="value 1" />
          <MenuItem value="2" primaryText="value 2" />
          <MenuItem value="3" primaryText="value 3" />
        </Field>
      </div>

      <div>
        <button type="submit" disabled={pristine || submitting}>
          Submit
        </button>
        <button type="button" disabled={pristine || submitting} onClick={reset}>
          Clear Values
        </button>
      </div>
    </form>
  );
};

export default reduxForm({
  form: "form" 
})(Form);

如下图所示 单击此处的组合框选项时

我已经创建了一个代码沙盒实例 https://codesandbox.io/s/l2pqoryvvl?fontsize=14

【问题讨论】:

    标签: reactjs material-ui redux-form


    【解决方案1】:

    只需将 MenuItems 更改为

      <MenuItem value="1">value 1</MenuItem>
      <MenuItem value="2">value 2</MenuItem>
      <MenuItem value="3">value 3</MenuItem>
    

    菜单项不采用主要文本作为道具。

    【讨论】:

      【解决方案2】:

      @S.Haviv 在我改变时提到过

      &lt;MenuItem value="1" text="value 1" /&gt;&lt;MenuItem value='1'&gt;value 1&lt;/MenuItem&gt; 出现菜单项但点击不成功。所以我不得不去掉 Select 字段中的 onclick 处理程序 我还为组件添加了一个标签

      这是完整组件的代码 https://codesandbox.io/s/l2pqoryvvl?fontsize=14

      import React from "react";
      import { Field, reduxForm } from "redux-form";
      
      import SelectField from "@material-ui/core/Select";
      import MenuItem from "@material-ui/core/MenuItem";
      import InputLabel from '@material-ui/core/InputLabel';
      import FormControl from '@material-ui/core/FormControl';
      
      const renderSelectField = ({
        input,
        label,
        meta: { touched, error },
        children,
        ...custom
      }) => (
          <FormControl>
            <InputLabel >{label}</InputLabel>
            <SelectField
              floatingLabelText={label}
              errorText={touched && error}
              {...input}
              children={children}
              {...custom}
              />
          </FormControl>
      
        );
      
      const Form = props => {
        const { handleSubmit, pristine, reset, submitting } = props;
        return (
          <form onSubmit={handleSubmit}>
            <div>
              <Field
                name="value"
                component={renderSelectField}
                label="Choose a Value"
                value="1"
              >
                <MenuItem value="1">value 1 </MenuItem>
                <MenuItem value="2">value 2 </MenuItem>
                <MenuItem value="3">value 3 </MenuItem>
              </Field>
            </div>
      
            <div>
              <button type="submit" disabled={pristine || submitting}>
                Submit
              </button>
              <button type="button" disabled={pristine || submitting} onClick={reset}>
                Clear Values
              </button>
            </div>
          </form>
        );
      };
      
      export default reduxForm({
        form: "form" // a unique identifier for this form
      })(Form);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-27
        • 1970-01-01
        • 2020-06-23
        • 1970-01-01
        • 2013-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多