【发布时间】:2020-10-19 22:12:03
【问题描述】:
在我的 ClientData.js 中
我正在使用 useEffect 调用 API(正在运行),然后使用 useState 将 API response.data 设置为变量(正在运行)。
response.data 是一个对象数组,然后我将其设置为等于局部变量。但是当我尝试访问对象参数时,我得到一个对象未定义错误。
我认为问题可能是对象未定义,因为它正在等待 API 响应。
这是来自 API 的对象的样子:
objTest={
ClientDatabase: "21",
ClientID: "21",
ClientName: "21",
ClientServer: "21",
Country: "US - 21",
DatabaseVersion: "21",
Namespace: "21",
};
function SimpleSelect() {
const classes = useStyles();
const [objTest, setobjTest] = useState([]);
const clientAPI = useCallback( async() => {
//returns an array of objects
await axios({
method:'get',
url,
auth: {
username: user,
password: pass
}
})
.then(function(response) {
setobjTest( response.data)
})
.catch(function (error){
console.log(error);
});
})
useEffect( () => {
clientAPI();
}, [])
当我尝试访问对象时,它使用 console.log((objTest[0]));
但是当我尝试访问 objects 参数时
像这样:console.log((objTest[0].ClientDatabase));
返回
TypeError: 无法读取未定义的属性“ClientDatabase”
这是 response.data 的控制台日志 enter image description here
response.data 是一个数组。
【问题讨论】:
-
当我使用类而不是函数并使用 CompetentDidMount 而不是 useEffect 时,此语法工作正常
-
您是否检查过以确保 data.response 确实是一个数组?
-
@RameshReddy 我 console.log(objTest[0].ClientDatabase) 在 useEffect 语句下面 10 行。 objTest[0].ClientDatabase 的语法返回未定义的错误。
-
@RameshReddy 当我执行 objTest[0] 时,它会工作并返回对象。
-
您是否将其记录在具有 [objTest] 依赖项的 useEffect 中?
标签: javascript reactjs es6-promise use-effect use-state