reactjs - CastError:转换到 ObjectId 失败,路径中的值“未定义”
问题描述
我正在尝试使用从 apis 获取数据,在我的 useEffect 函数中,它包含 2 个获取请求。第二个获取请求需要一个基于第一个获取请求的返回值的参数。但是我遇到了一个错误,即 CastError: Cast to ObjectId failed for value "undefined" at path from mongoose。任何人都可以提供帮助或有什么干净的方法可以解决?非常感谢!
例如:
const[data,setdata]=useState([])
useEffect(() => {
axios.get('http:localhost.....').then({res=>{
setdata(res.data)
}})
axios.get(`http:localhost.....${data._id}`)
}, [])
解决方案
那是因为数据将在下一次渲染时可用,添加另一个 useEffect 以在数据有值时触发第二次调用:
const[data, setData]= useState([]);
useEffect(() => {
axios.get('http:localhost.....').then(res=> setData(res.data);
}, [])
useEffect(() => {
if(data.lenght){
axios.get(`http:localhost.....${data._id}`);
}
}, [data])
推荐阅读
- vue.js - 当一个加载依赖另一个时如何在vue组件之间传递值
- wordpress - 提交联系表 7 后访问表单数据
- java - 向自定义可扩展列表视图项标题添加多个文本视图
- go - Go float vs uint64 比较问题
- wpf - 无法使用 ContentStringFormat 中的 {0} 作为第一个字符
- c++ - 如何在 C++ 中解决 ncurses 和 std 输入/输出之间的冲突
- c# - 导出日期到 csv 文件的问题,如何将日期导出到 excel
- block-device - nbd 上的 mkfs.ext4 卡住了
- php - Laravel 找不到 php 扩展 ssh2_connect()
- python - 连续第 n 个最小值 Pandas