Администратор реакции — Создайте запись, а затем обновите элемент

#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. Должен быть какой-то способ получить данные, полученные в результате создания, а затем использовать их. Это должно быть особенностью. Я просто не уверен, как это сделать.