Прочитав официальный документ здесь , я сталкиваюсь с этими утверждениями
... компонент <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
.