Как связать входные данные компонента без состояния с другими входными данными в представлениях реакции-администратора - PullRequest
2 голосов
/ 17 марта 2019

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

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

Затем я попытаюсь разобраться в высказываниях этого эксперимента:

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

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

Оказывается, что реквизит Филда 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.

1 Ответ

0 голосов
/ 20 марта 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...