Javascript Undefined不是对象(评估';users.map';)反应本机
你好,不知什么原因,当我试图映射通过另一个组件传递的状态时,我得到了这个未定义的错误不是一个对象('evaluation user.map'),我不知道为什么Javascript Undefined不是对象(评估';users.map';)反应本机,javascript,reactjs,dictionary,Javascript,Reactjs,Dictionary,你好,不知什么原因,当我试图映射通过另一个组件传递的状态时,我得到了这个未定义的错误不是一个对象('evaluation user.map'),我不知道为什么 import React,{useState,useffect}来自“React”; 从“react native”导入{样式表、文本、视图、图像、滚动视图}; 从“../../molecles/Card”导入卡片; 从“Axios”导入Axios; 常量主屏幕=()=>{ const[users,setUsers]=useState(
import React,{useState,useffect}来自“React”;
从“react native”导入{样式表、文本、视图、图像、滚动视图};
从“../../molecles/Card”导入卡片;
从“Axios”导入Axios;
常量主屏幕=()=>{
const[users,setUsers]=useState([]);
useffect(()=>{
//取回
//取('https://reqres.in/api/users')
//.then(res=>res.json())
//.then(json=>setUsers(json.data));
//Axios
Axios.get()https://jsonplaceholder.typicode.com/users)。然后(res=>
设置用户(res.data.data),
);
}, []);
返回(
用户列表
{users.map(项=>(
))}
);
};
导出默认主屏幕;
const styles=StyleSheet.create({
容器:{
弹性:1,
水平方向:15,
paddingTop:20,
},
标题:{
尺寸:36,
重量:'700',
},
卡片:{
玛金托普:15,
对齐项目:“居中”,
},
姓名:{
尺码:18,
重量:'700',
},
电邮:{
尺寸:16,
颜色:“灰色”,
玛金托普:10,
},
图片:{
身高:150,
宽度:150,
玛金托普:10,
},
});代码>
测试代码res.data.data不存在后,应将状态设置为res.data您的问题是URLhttps://jsonplaceholder.typicode.com/users
返回一个用户数组。这意味着res.data
将生成用户数组
数组没有data
属性,因此res.data.data
将导致未定义。改用setUsers(res.data)
当前响应具有以下结构:
[«用户»]
setUsers(res.data.data)
只有在响应具有以下结构时才有效:
{“数据”:[«用户»]}
原因是,当组件第一次呈现时,在useffect()
可以获取数据之前,users
是一个空数组,因此item
是未定义的。快速修复方法可以是将users.map(item=>(…
替换为users.length&&users.map(item=>(…
。更好的修复方法是使用状态跟踪组件是否正在加载用户,并根据需要显示加载程序或用户列表。
useEffect(() => {
//Fetch
// fetch('https://reqres.in/api/users')
// .then(res => res.json())
// .then(json => setUsers(json.data));
//Axios
Axios.get("https://jsonplaceholder.typicode.com/users").then((res) =>
console.log(res.data)
);
}, []);