Json Can';t使用React Native从API获取单个项
我正在使用一个带有React Native的API,我试图设置一个项来显示它的属性,但我无法从API获取对象 这就是我正在使用的代码,当我使用来自同一API的对象数组时,它工作得非常好Json Can';t使用React Native从API获取单个项,json,reactjs,react-native,fetch,Json,Reactjs,React Native,Fetch,我正在使用一个带有React Native的API,我试图设置一个项来显示它的属性,但我无法从API获取对象 这就是我正在使用的代码,当我使用来自同一API的对象数组时,它工作得非常好 const url = `https://2bgo6ptw6j.execute-api.us-east-1.amazonaws.com/dev/client/99a00a42-cbc8-43e7-9b43-14b98684540f` const [client, setClient] = useState
const url = `https://2bgo6ptw6j.execute-api.us-east-1.amazonaws.com/dev/client/99a00a42-cbc8-43e7-9b43-14b98684540f`
const [client, setClient] = useState();
useEffect(() => {
console.log('asd');
fetch(url)
.then((response) => response.json())
.then((json) => {
console.log(json);
setClient(json);
})
.catch((e) => {
console.log(e);
})
}, []);
const male = "Masculino";
const female = "Femenino";
let message;
if (client.gender === 'M') {
message = male;
} else {
message = female;
}
这是从该URL返回的对象:
{
"clientName":"Diego",
"lastName":"Penaranda",
"SK":"#METADATA#99a00a42-cbc8-43e7-9b43-14b98684540f",
"PK":"CLIENT#99a00a42-cbc8-43e7-9b43-14b98684540f",
"phone":76948002,
"clientId":"99a00a42-cbc8-43e7-9b43-14b98684540f",
"gender":"M",
"type":"client"
}
我甚至没有收到useEffect中的控制台日志,我直接收到以下消息:
“无法读取未定义的属性‘gender’。您正在尝试引用
客户端。甚至在设置客户端
之前,gender
:在第一次渲染时,客户端
将在进行提取时处于未定义状态。只有在提取完成后,客户端才能设置为对象。因此,您需要检查客户端!==在尝试访问您认为结果应该具有的任何属性之前,未定义
提示:要善于阅读和理解这样的常见错误消息。“无法读取未定义的属性‘gender’。”是一条有用的错误消息,因为这正是正在发生的事情,所以如果您理解了错误消息,我相信您不需要发布此问题:)。您正在尝试引用客户端。gender
甚至在设置客户端之前:在第一次渲染时,客户端
在进行提取时将是未定义的
。只有在提取完成后,客户端才能设置为对象。因此,您需要检查客户端!==在尝试访问您认为结果应该具有的任何属性之前,未定义
提示:要善于阅读和理解这样的常见错误消息。“无法读取未定义的属性‘gender’。”是一条有用的错误消息,因为这正是正在发生的事情,因此如果您理解错误消息,我相信您不需要发布此问题:)。要补充这一点,如果它在数组中工作正常,那么您的初始状态可能是空数组。此处const[client,setClient]=useState()
您的客户端
开始时为未定义
,并将保持未定义
,直到提取完成。这是异步发生的,因此useffect
下面的代码将在效果完成之前运行。此外,如果它与数组一起工作正常,那么您的初始状态可能是空数组。此处const[client,setClient]=useState()
您的客户端
开始时为未定义
,并将保持未定义
,直到提取完成。这是异步发生的,因此useffect
下面的代码将在效果完成之前运行。