Как отреагировать на второй запрос на таблицу материалов в responsejs?

Я использую таблицу материалов с реактивами для создания сетки данных. Я заполняю таблицу данными из предыдущего HTTP-запроса от API и хочу отобразить ответ второго HTTP-запроса в другом столбце этой же таблицы

render: rowData => this.Myfunction(rowData)

Myfunction(data){
  axios.post('/api/status', {
      payload:data
    })
    .then( res => {
        if(res.data[0] != undefined){
       return res.data[0].status
      }
      else{
          return 'Null'
      }
    })
    .catch(function (error) {
          console.log(error);
     });
   }
}

Данные, которые я отправляю в myFunction, работают правильно для каждой строки, но я не могу вернуть ответ, полученный на мой запрос с помощью axios.

Я тоже пробовал

return axios.post('/api/reviews', {
  payload:data
}) 

Но я получаю ошибку:

Objects are not valid as a React child (found: [object Promise]). If you     meant to render a collection of children, use an array instead.

1 ответ

Проблема в том, что вы используете обещания в MyFunction но не возвращает его правильно. Следующее установит значение output в undefined, потому что возвращение внутрь then асинхронный

function Component() {
  const data = {};
  const [output, setOutput] = useState({});

  useEffect(() => {
    setOutput(MyFunction(data));
  }, []);

  return <div>{ JSON.stringify(output) }</div>;
}

Во-первых, вам нужно вернуть обещание от MyFunction,

function Myfunction(data) {
  return axios
    .post('/api/status', {
      payload: data
    })
    .then(res => {
      if (res.data[0] != undefined) {
        return res.data[0].status;
      } else {
        return 'Null';
      }
    })
    .catch(function(error) {
      console.log(error);
    });
}

Затем обработайте результат обещания, используя then вызов.

function Component() {
  const [output, setOutput] = useState({});

  useEffect(() => {
    MyFunction(data).then(setOutput);
  }, []);

  return (
      <div>{ JSON.stringify(output) }</div>
  )
}
Другие вопросы по тегам