Как предварительно заполнить определенные поля в форме создания, используя предыдущие данные с помощьюact-admin? - PullRequest
1 голос
/ 22 января 2020

Я использую response-admin (3.1.2) и внедряю кнопку «Сохранить и добавить», чтобы разрешить массовое создание, как описано здесь .

Я пытаюсь предварительно заполнить определенные поля в следующей форме создания на основе входных данных предыдущей формы. Как мне этого добиться?

Песочница, чтобы посмотреть

Я создал кодовую песочницу , не стесняйтесь ее раскошелиться. Ожидаемое поведение заключается в том, чтобы предварительно заполнить поле teaser предыдущим значением тизера, когда вы нажимаете кнопку «Сохранить и добавить» на странице пост-создания (PostCreate. js).

Мой компонент создания выглядит следующим образом это на данный момент:

const PostCreateToolbar = props => (
  <Toolbar {...props}>
    <SaveButton
      label="post.action.save_and_edit"
      redirect="edit"
      submitOnEnter={true}
    />
    <SaveButton
      label="post.action.save_and_add"
      redirect={false}
      submitOnEnter={false}
      variant="text"
    />
  </Toolbar>
);

const PostCreate = ({ permissions, ...props }) => {
  return (
    <Create {...props}>
      <SimpleForm
        toolbar={<PostCreateToolbar />}
        validate={values => {
          const errors = {};
          ["title", "teaser"].forEach(field => {
            if (!values[field]) {
              errors[field] = "Required field";
            }
          });

          return errors;
        }}
      >
        <TextInput autoFocus source="title" />
        <TextInput source="teaser" fullWidth={true} multiline={true} />
      </SimpleForm>
    </Create>
  );
};

То, что я пробовал

Этот пример не соответствует моим потребностям, так как мне нужно сначала сохраните текущую форму перед перенаправлением на новую форму.

Этот ответ также не работает, так как мне просто нужно некоторые поля (не все ), необходимо предварительно заполнить.

Я также попытался перенаправить на форму создания, передавая параметры полей для предварительного заполнения, используя prop redirect="/posts/create?teaser=aa" в компоненте SaveButton, но затем новая форма заполняется all данные из предыдущей формы.

Любая помощь по этому вопросу будет очень признательна.

Большое спасибо.

1 Ответ

0 голосов
/ 23 января 2020

Чтобы предварительно заполнить некоторые поля в форме Создать, передайте строковый параметр source в URL. Вы можете установить этот URL в функции SaveButton redirect :

redirect={(redirectTo, basePath, is, data) => `/posts/create?source={"title":"${data.title}"}`}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...