Доступ к значению родственных полей в компоненте реакционной формы

У меня есть два поля выбора в форме с окончательной реакцией. Поле выбора содержит список "опций", которые нужно представить в раскрывающемся списке. Что я хотел бы сделать, так это убедиться, что параметры, доступные во втором раскрывающемся списке, "уменьшены" элементами, выбранными в первом раскрывающемся списке.

Так что для этого требуется второе раскрывающееся меню, чтобы узнать, какое значение было выбрано в первом раскрывающемся списке. Это концепция того, чего я пытаюсь достичь:

const fruitOptions = ['apple', 'orange', 'banana', 'grapes'];
<Field
  name = "morningTea"
  component = {SelectField}
  label = "Fruit for Morning Tea"
  options = {fruitOptions}
/>
<Field
  name = "afternoonTea"
  component = {SelectField}
  label = "Fruit for Afternoon Tea"
  options = {_.without(fruitOptions, morningTea)}
/>

Но я не вижу способа получить доступ к другим значениям поля в форме. Учитывая, что список "fruitOptions" не является собственным полем.

2 ответа

ОК, мне кажется, что это проблема с документацией - я подниму билет.

По сути, в документации просто не хватает того, что тип FormRenderProps также имеет реквизит "values". Отсюда, в компоненте, который декорирован формой реакции-финала, вы можете получить доступ к props.values ​​и оттуда передать значение в другие компоненты / поле.

Например

<Form
    render={formRenderProps => {
        const { morningTea } = formRenderProps.values;    
        const fruitOptions = ['apple', 'orange', 'banana', 'grapes'];
        <Field
          name = "morningTea"
          component = {SelectField}
          label = "Fruit for Morning Tea"
          options = {fruitOptions}
        />
        <Field
          name = "afternoonTea"
          component = {SelectField}
          label = "Fruit for Afternoon Tea"
          options = {_.without(fruitOptions, morningTea)}
        />
    }}
/>

Я также создал пример этого на Песочнице для любого, у кого есть тот же самый вопрос.

Вы можете сделать это, если сможете получить значение параметра в поле "morningTea". Предполагается, что значение сохраняется как "morningTea.value".

Вы можете передать следующие параметры:

 <Field
   name = "afternoonTea"
   component = {SelectField}
   label = "Fruit for Afternoon Tea"
   options = {fruitOptions.filter(option => option != morningTea.value)}
 />

Я предположил это через эту концепцию:

 const q = [1,2,3,4,5]
    console.log(q) = "[1,2,3,4,5]"
const y = q.filter(w => w != 1 )
    console.log(y) = "[2,3,4,5]"
Другие вопросы по тегам