Обновление состояния компонента отстает на один шаг

#reactjs #react-hooks #react-state

#реагирует на #реагируют-крючки #реагирующее состояние

Вопрос:

Я хочу использовать массив для хранения данных, отправленных из базы данных. Однако контекст таблицы всегда отстает на один шаг.

Например, я добавляю 3 данные: (Ric History 95) , (Ric History 80) и (Ric Math 70) . Однако первая картинка была результатом после добавления (Ric History 80) , а вторая картинка-результат после добавления (Ric Math 70) . нажмите добавить после истории 80 нажав добавить после математики, 70

Вот мой код.

 const Body = () =gt; {  ....  const [table, setTable] = useState([]);     const handleAdd = async () =gt; {  const {  data: { message, card, tabledata },  } = await axios.post('/api/create-card', {  name,  subject,  score,  });   if (!card) addErrorMessage(message);  else addCardMessage(card);   console.log("tabledata in add",tabledata);  setTable(tabledata);  };   const handleQuery = async () =gt; {  const {  data: { messages, message , tabledata},  } = await axios.get('/api/query-cards', {  params: {  type: queryType,  queryString,  },  });   if (!messages) addErrorMessage(message);  else addRegularMessage(...messages);  console.log("tabledata in query:", tabledata);  setTable(tabledata);  };   useEffect(() =gt; {  console.log("table has changed!", table);  }, [table])    return (  lt;Wrappergt;  /*other elements*/  { lt;TableContainer component={Paper}gt;  lt;Table sx={{ minWidth: 650 }} size="small" aria-label="a dense table"gt;  lt;TableHeadgt;  lt;TableRowgt;  lt;TableCellgt;Namelt;/TableCellgt;  lt;TableCellgt;Subjectlt;/TableCellgt;  lt;TableCellgt;Scorelt;/TableCellgt;  lt;/TableRowgt;  lt;/TableHeadgt;  lt;TableBodygt;  {table.map((row) =gt; (  lt;TableRowgt;   lt;TableCell component="th" scope="row"gt;{row.name}lt;/TableCellgt;  lt;TableCellgt;{row.subject}lt;/TableCellgt;  lt;TableCellgt;{row.score}lt;/TableCellgt;  lt;/TableRowgt;  ))}  lt;/TableBodygt;  lt;/Tablegt;  lt;/TableContainergt;}  lt;/Wrappergt;     ); };   

Я был бы очень признателен, если бы кто-нибудь помог мне исправить эту ошибку.

Комментарии:

1. Что показывает console.log("tabledata in add",tabledata); ?

2. @p1uton данные, которые отстают на один шаг

3. Это означает, что ваш сервер возвращает старые данные

4. о боже @p1uton, спасибо тебе огромное, я все исправлю! Я думал, что это проблема с интерфейсом