我怎样才能在React道具中使用承诺?

mbjcgjjk  于 2022-10-15  发布在  React
关注(0)|答案(1)|浏览(101)

我正在从服务器获取数据,我想将数字数据更改为字符串。子码,如

{
    title: 'stage',
    dataIndex: 'stage',
    render:  (text, record, index) => {
        return (
            <Tag> {getBookItem(TASK_STAGE, text)} </Tag>
        );
    },
} 
const getBookItem = async (key, text) => {
var data = await getSysData();
var str = '';
data[key].forEach((element) => {
    if (element.id == text) {
        str = element.value;
    }
});
return str;}
const getSysData = async () => {
return await markBook()};

函数getBookItem返回一个‘Promise’,因此我收到如下错误

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

我不能使这个函数不是异步的,因为我使用AXIOS来获取数据。而且我不能在Reaction道具中使用Prmoise,那么我如何更改此数据

bzzcjhmw

bzzcjhmw1#

不能在JSX中直接呈现异步函数,因为它返回承诺。您应该将返回值存储在变量中并尝试呈现它。我正在为您分享一个示例代码块。请试着通过比较找出你的错误。

import React from 'react';

export default function App() {

  const [first, second] = [2, 4];
  let result;
  const sum = async (a, b) => (result = a + b);

  sum(first, second); // call the function somewhere you need, (usually in useEffect)

  return (
    <div>{result}</div> {/*  renders 6  */}
  );
}

相关问题