#react-admin
#react-admin
Вопрос:
Я пытаюсь следовать примеру из https://marmelab.com/react-admin/CreateEdit.html#onsuccess . Я хотел бы уведомить пользователей заголовком записи об обновлении.
const onSuccess = ({ data }) => {
console.log(data) // output: undefined
notify(`Changes to post "${data.title}" saved`)
redirect('/posts');
refresh();
};
JS всегда жалуется, что undefined
у него нет title
свойства.
Согласно документам, data
исходит из ответа dataProvider.update()
Функция onSuccess получает ответ от вызова dataProvider (dataProvider.create() или dataProvider.update())…
Но, из того, что я тестировал, onSuccess()
вызывается сразу при отправке и dataProvider.update()
вызывается, когда всплывающее сообщение исчезает, поэтому onSuccess()
не получает результат обещания, возвращенного dataProvider.update()
.
Есть ли что-то, чего мне не хватает в примере?
Дополнительная информация
Я использую react-admin
версию v3.11.1 и Chrome 87.0.4280.88, запись обновляется правильно, если я удаляю onSuccess()
из компонента
Ответ №1:
Если вы находитесь в Edit
контексте, вы должны установить undoable={false}
значение для Edit
компонента, чтобы предотвратить оптимистичный ответ, который не ожидает ответа на запрос.
<Edit
{...props}
onSuccess={onSuccess}
undoable={false}
>
...
</Edit>
Ссылка: https://marmelab.com/react-admin/CreateEdit.html#undoable
Комментарии:
1. Я хочу сохранить возможность отмены. Оба несовместимы?
2. К сожалению, я думаю, что нет. Возможно, я ошибаюсь, поэтому я предлагаю вам задать вопрос непосредственно в репозитории github с минимальным воспроизводимым примером, чтобы владелец мог ответить правильно.