javascript - 解决功能组件中的“对象作为 React 子项无效(找到:[object Promise])”
问题描述
我在功能组件中有以下内容。
const [trucks, setTrucks] = React.useState([]);
React.useEffect(() => {
Request.getTrucksForToday().then((x) => {setTrucks(x)}); // <-- this is an async function to an axios request
});
return (
...
{trucks.map((truck) =>{return<LocalShippingIcon lat={truck.latitude} lng={truck.longitude} text={truck.name}/>})}
...
);
我为这个问题看到的所有解决方案都建议将 async 函数放在componentDidMount()
( 1 , 2 ) 中。有没有办法在不这样做的情况下解决它?
为了完整起见,这里是功能
export function getTrucksForToday() {
return axios({
method: "GET",
url: constants.backend_url + "schedule/getTrucksForToday",
headers: request_headers
})
.then(function(response) {
console.log(response.data);
return response.data;
})
.catch(function(error) {
console.log(error);
return error;
});
}
解决方案
添加[]
到 useEffect()
const [trucks, setTrucks] = React.useState([]);
React.useEffect(() => {
Request.getTrucksForToday().then((x) => {setTrucks(x)}); // <-- this is an async function to an axios request
},[]);
return (
...
{trucks.map((truck) =>{return<LocalShippingIcon lat={truck.latitude} lng={truck.longitude} text={truck.name}/>})}
...
);
推荐阅读
- json - Firefox 插件:将加载的 json 解析/保存为 HAR 或文本文件
- pyspark - pySpark 数据框过滤方法
- shell - 我正在尝试通过在 osx 10.14 上制作可点击的 shell 脚本来启动“jupyter notebook”
- flutter - 更改文本相对于其他小部件的大小/位置
- sorting - 如何从 29 年的数据集中按小时计算一年的中值?
- c# - 这是 C# Monad,问题出在哪里?
- python - 将嵌套字典转换为数据框,键作为行名,值中的字典作为列?
- command-line-interface - 使用 spaCy 命令行训练器管理训练/开发拆分
- arrays - 二维数组中的数组大小不匹配
- sql - PostgreSQL INSERT INTO 表不存在