Как привязать вход компонента без состояния к другим входам в представлениях реагирующего администратора

Прочитав официальный документ здесь, я наткнуться на эти заявления

...компонент <Field> может получить доступ к текущей записи через ее контекст. Свойство name служит селектором свойства записи для редактирования.

Затем я пытаюсь понять утверждения этого эксперимента:

const CustomInput1 = () => (
     <span>
         <Field name="title" component="input" />
     </span>
);

export const PostCreate = (props) => (
    <Create {...props}>
        <SimpleForm>
            <TextInput source="title" />
            <CustomInput1/>
        </SimpleForm>
    </Create>
);

Оказывается, свойство Field name и свойство TextInput source связаны друг с другом в том смысле, что всякий раз, когда я делаю какое-либо изменение в одном вводе, значение другого ввода также изменяется соответствующим образом.

Мой вопрос. Почему невозможно воспроизвести тот же эффект с помощью компонента без состояния?

const CustomInput2 = ({ record, source }) => (
  <input type="text" value={record[source]}/>;
);
export const PostCreate = (props) => (
    <Create {...props}>
        <SimpleForm>
            <TextInput source="title" />
            <CustomInput2 source="title"/>
        </SimpleForm>
    </Create>
);

Насколько я понимаю, оба входа в последнем случае связываются с record['title'] и используют один и тот же объект record, не так ли?

Фактическая причина, по которой я это делаю, заключается в том, что я хочу изменить все другие значения ввода на основе обновления одного единственного ввода. Мое наивное понимание состоит в том, что этого можно добиться с помощью общего record.


person Prksa    schedule 17.03.2019    source источник


Ответы (1)


так что не получится, для решения вашей проблемы используйте FormDataConsumer:

https://marmelab.com/react-admin/Inputs.html#linking-two-inputs

person MaxAlex    schedule 20.03.2019