react-admin: «данные» не определены в onSuccess() на компоненте

#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 с минимальным воспроизводимым примером, чтобы владелец мог ответить правильно.