Как установить пользовательскую радиогруппу в избыточную форму

Что я должен сделать, чтобы установить ColoredRadioGroup в состояние моей формы? Пробовал несколько вещей из документов с редукционной формой, но это не помогло. Я слышал о передаче реквизитов onChange и value, но не знаю, как это сделать в моем случае.

ColoredRadioGroup.js:

class CustomRadioGroup extends PureComponent {
  constructor(props) {
    super(props);

    this.state = {
      value: props.defaultValue,
    };
  }

  setValue = (value) => {
    this.setState(() => ({ value }));
  };

  handleChangeEvent = (event) => {
    if (this.props.onChange) {
      this.props.onChange(this.props.data.filter(elem => elem.value === event.target.value)[0]);
    }
    this.setState({ value: event.target.value });
  };

  render() {
    return (
      <RadioGroup
        style = {this.props.groupStyle}
        name = {this.props.groupName}
        value = {this.state.value}
        onChange = {this.handleChangeEvent}
      >
        <FormControlLabel
          value = "green"
          control = {
            <GreenRadio
              icon = {<CheckBoxOutlineBlankIcon />}
              checkedIcon = {<CheckBoxIcon />}
            />
          }
        />
        <FormControlLabel
          value = "yellow"
          control = {
            <YellowRadio
              icon = {<CheckBoxOutlineBlankIcon />}
              checkedIcon = {<CheckBoxIcon />}
            />
          }
        />
    ...
      </RadioGroup>
    );
  }
}

export default CustomRadioGroup;

В файле формы:

  <Field
    component = {props => <ColoredRadioGroup value = {props.input.value} />}
    name = "agent_group"
    type = "radio"
  />
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
2
0
1 426
1

Ответы 1

Когда вы оборачиваете свой компонент в Field redux-form будет передавать ввод и мета-объекты через реквизит. на своем пути вы только проходите props.input.value prop. вам нужно использовать props.input.onChange в своем handleChangeEvent, чтобы обновить это конкретное поле в магазине избыточности. рефакторинг вот так:

 <Field
  component = {ColoredRadioGroup}
  name = "agent_group"
/>

и вы должны увидеть реквизиты в своем пользовательском компоненте.

Посмотрите https://redux-form.com/8.1.0/docs/api/field.md/#props для получения дополнительной информации.

Другие вопросы по теме

Необработанное отклонение (TypeError): planets.filter не является функцией
React/Redux: как разрешить пользователям переходить на следующую страницу только после завершения предыдущей страницы?
Реагировать на повторное монтирование компонента при изменении реквизита другого компонента
Пользовательская проверка с помощью Antd и redux-form-antd
Как отображать текущие значения во входных данных при редактировании форм с помощью реакции/редукции
React - избыточная форма - невозможно ввести после сопоставления свойства значения
Реагировать на ошибку Minified # 130 только во время сборки, а не при запуске пряжи
Нужна помощь, чтобы вызвать действие с помощью избыточности, а также обновить состояние компонента в одном событии Click?
Как изменить определенный объект в массиве объектов, хранящихся в состоянии сокращения
Чтение массива разными способами дает мне разные результаты