#reactjs #react-admin
Вопрос:
У меня есть приложение администратора react. Когда пользователь нажимает кнопку, отправленный пользователем элемент утверждается и в нем изменяется параметр. Затем крючок useCreate используется для создания дубликата записи во второй базе данных. Мне нужно дождаться завершения крючка useCreate, а затем обновить исходную запись идентификатором, полученным в результате создания. Я не совсем понимаю, как это сделать.
Вот код, который создает кнопку, которая позволяет пользователю одобрить элемент, а затем выполняет обновление, создание и нуждается в последующем обновлении.
const ApproveButton = ({ record }) =gt; { const [approve] = useUpdate( "itemsubmission", record.id, { status: ItemStatusTypes["APPROVED"] }, record ); const [create] = useCreate("items", { isValid: true, name: record.title === null ? "" : record.title }); const handleClick = (record) =gt; { approve(); const result = create(); /* This is where I need to take the results of the create function and place the /* resulting ID in the first record's database. The update is easy, but I don't /* know how to wait for the create to end }; return ( lt;FlatButton label={EventStatusChangeTypes["APPROVED"]} type={"approve"} onClick={handleClick} /gt; ); };
Ответ №1:
Вы можете использовать async/wait, обещание. Пример, приведенный с помощью async/await
const handleClick = async (record) =gt; { approve(); const result = await create();
Комментарии:
1. Я пытался это сделать. Это не работает.
2. useUpdate, useCreate работает нормально?
3. ДА. Все работает нормально. Я не думаю, что useCreate возвращает обещание
4. тогда вам не нужно ждать
5. Должен быть какой-то способ получить данные, полученные в результате создания, а затем использовать их. Это должно быть особенностью. Я просто не уверен, как это сделать.