Redux表单自定义下拉菜单

时间:2018-04-06 19:08:31

标签: reactjs redux redux-form

我正在尝试使用redux表单创建一个下拉菜单选项,这是我的表单代码:

<form
    onSubmit={handleSubmit(this.dialogSubmitHandler.bind(this))}
    style={{
        width: '80%'
    }}
>
    <Field
        label="Type"
        name="type"
        component={this.renderSelection}
    >
        <MenuItem value={'price'} primaryText="Price" />
        <MenuItem value={'volume'} primaryText="Volume" />
        <MenuItem value={'dailyHigh'} primaryText="Daily High" />
        <MenuItem value={'dailyLow'} primaryText="Daily Low" />
        <MenuItem value={'sma'} primaryText="SMA" />
        <MenuItem value={'rsi'} primaryText="RSI" />
        <MenuItem value={'macd'} primaryText="MACD" />
    </Field>
</form>

这是我的renderSelection代码:

renderSelection(props) {
    const {
      meta: { touched, error },
      label,
      onChange
    } = props;

    const errText = touched && error ? error : '';

    return (
      <SelectField
        floatingLabelText={label}
        errorText={errText}
        {...props}
        onChange={(e, index, val) => onChange(val)}
        maxHeight={200}
      >
      </SelectField>
    );
}

这里的问题是,这会引发一个错误,“props.onChange”不是一个函数,而在这里的示例中:https://redux-form.com/6.0.0-rc.1/examples/material-ui/,这正是他们这样做的。

知道是什么导致道具没有onChange功能吗?

1 个答案:

答案 0 :(得分:0)

好吧事实证明,当redux表单用于不是文本输入的东西时,它并不能很好地发挥作用。因此,您必须做的是假装下拉菜单是文本输入。使用该想法,无论何时发生选择,都将该选择值传递给文本输入的onChange函数。这将输入的文本值设置为选择值。最后,将选择字段的值设置为文本输入的值。这是我的代码:

multiprocessing