В настоящее время я пытаюсь свернуть форму редактирования из представления списка в 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, поскольку он не работает так, как мне бы хотелось в данный момент.