开发者问题收集

正在获取数据但“无法读取未定义的属性‘0’”

2021-05-31
129

我尝试从 https://randomuser.me/api/ 获取一些数据。我想获取随机用户性别,但我不知道为什么我的函数不这样做,并且我收到此错误“无法读取未定义的属性‘0’”

我的代码:

const [fetchData, setFetchData] = useState('');
         
    fetch('https://randomuser.me/api/')
        .then((response) => response.json())
        .then(setFetchData)
        .then(console.log(fetchData.results[0].gender));
1个回答

fetchData 在调用 setFetchData 时不会更新。请记住,它只是一个在您调用 useState 时分配的局部变量。它不会神奇地更新,直到下次调用您的函数。即使到那时, setState 也是异步的,因此它可能不会立即更改。

这可能是您真正想要的。

fetch('https://randomuser.me/api/')
    .then((response) => response.json())
    .then((json)=> {
         setFetchData(json);
         console.log(json.results[0].gender);
     });

我在本地尝试过,它对我有用。

另外,顺便说一句。为了稳健性,当响应完全出乎意料时,您不会在控制台语句上抛出异常:

if (json && json.results && json.results[0]) {
    console.log(json.results[0].gender);
}
selbie
2021-05-31