【发布时间】:2021-05-26 18:20:59
【问题描述】:
我的问题如下:
我有一个异步函数,它发出一个 mysql 请求,并根据请求的结果返回不同的 DIV。
const GetData = async (idAluno, disciplina) => {
variavel = await confereInicial(idAluno, disciplina.id);
//console.log(variavel); imprime direitinho, sem problemas
if (variavel.data.length === 0) {
return (
<DivCheckBox
dads={dados}
nomeDisciplina={disciplina.title}
labelDisciplina={disciplina.label}
id={disciplina.id}
inicial={0}
/>
);
} else {
return (
<DivCheckBox
dads={dados}
nomeDisciplina={disciplina.title}
labelDisciplina={disciplina.label}
id={disciplina.id}
inicial={1}
/>
);
}
};
并且这个函数在屏幕的渲染部分被多次调用(通过地图)。因此:
return (
<div>
{dados.state.nodesPadrao.map((p) => {
return <GetData idAluno={1} disciplina={p} />;
})}
</div>
...
);
问题是,当我编译时,它显示“对象作为反应子无效(找到:object Promise)。如果要呈现子集合,请改用数组。
我该怎么办?
【问题讨论】:
-
您可以将承诺放入组件生命周期方法(例如 componentDidMount() )并使用 setState 方法更新组件状态。渲染方法必须是同步的,并且只依赖于 props 和 state。
-
问:如何在reactJS中渲染一个异步函数? - 答:杠杆承诺!重复问题(详细说明如何执行此操作):Objects are not valid as a React child (found: [object Promise])
标签: javascript node.js reactjs axios