Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Can';t使用React Native从API获取单个项_Json_Reactjs_React Native_Fetch - Fatal编程技术网

Json Can';t使用React Native从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

我正在使用一个带有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();
    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
下面的代码将在效果完成之前运行。