Как перенаправить / свернуть расширенную форму редактирования после нажатия кнопки отправки в React-Admin - PullRequest
0 голосов
/ 29 июня 2019

В настоящее время я пытаюсь свернуть форму редактирования из представления списка в React-Admin после нажатия кнопки отправки. Я хочу иметь возможность просматривать обновленные изменения в новой форме списка после нажатия кнопки "Отправить".

Сейчас у меня есть класс, который обрабатывает при отправке формы, и я использую window.location.replace('URL') в этом классе, чтобы попытаться перенаправить страницу. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что, поскольку я хочу, чтобы страница перенаправляла на тот же URL-адрес, она не отображает сделанные изменения, а также не сворачивает форму редактирования. Когда я использую другой URL и возвращаюсь к списку, он показывает все изменения. Поэтому я хочу просто перезагрузить страницу (чтобы все обновилось и панель редактирования свернулась) после отправки формы. Однако, когда я использовал window.location.reload(), он перезагружает страницу непосредственно перед сохранением любых данных из формы редактирования.

Это код, который у меня есть на данный момент и который обрабатывает отправку:

const saveWithNote = (values, basePath, redirectTo) =>
  crudCreate(
    'usergrouprights',
    {
      ...values,
      GroupRights: CalcGroupPermissions(values).rights,
      GroupDenials: CalcGroupPermissions(values).denials
    },
    basePath,
    {
    redirectTo
    }
  );


class SaveWithNoteButtonView extends Component {
  handleClick = () => {
    const { basePath, handleSubmit, redirect, saveWithNote } = this.props;

    return handleSubmit(values => {
      saveWithNote(values, basePath, redirect);
      window.location.replace('/#/usergrouprights');
      // window.location.reload();
    });
  };

  render() {
    const { handleSubmitWithRedirect, saveWithNote, ...props } = this.props;

    return (
      <SaveButton handleSubmitWithRedirect={this.handleClick} {...props} />
    );
  }
}

const SaveWithNoteButton = connect(
  undefined,
  { saveWithNote }
)(SaveWithNoteButtonView);

export default SaveWithNoteButton;

В виде списка у меня есть пользовательская панель инструментов, которая выглядит следующим образом:

const PostEditToolbar = props => (
  <Toolbar {...props}>
    <SaveWithRightsValuesButton />
  </Toolbar>
);

Когда код запускается, он отправляет все правильно, но мне нужно вручную перезагрузить страницу, чтобы просмотреть изменения и свернуть форму редактирования. Я не уверен, правильно ли использовать вызов window.location.replace или reload, поскольку он не работает так, как мне бы хотелось в данный момент.

1 Ответ

0 голосов
/ 17 июля 2019

Попробуйте добавить

перенаправлять = "шоу"

до SaveButton :

<SaveButton
  handleSubmitWithRedirect={this.handleClick}
  redirect="show"
  {...props}
/>
...