Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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
Javascript 反应:Can';t将useState设置为对象数组。控制台日志显示未定义_Javascript_Reactjs_Use Effect_Use State - Fatal编程技术网

Javascript 反应:Can';t将useState设置为对象数组。控制台日志显示未定义

Javascript 反应:Can';t将useState设置为对象数组。控制台日志显示未定义,javascript,reactjs,use-effect,use-state,Javascript,Reactjs,Use Effect,Use State,我正在使用react和mongoose/mongo数据库。在页面加载时,我执行一个API调用并接收一个对象数组(它们是带有标题、描述等的“帖子”)。我试图映射数据,以便在单独的卡片上动态显示帖子信息。我可以从API调用中获取数据,但是当我尝试将状态更改为对象数组并将其记录到控制台日志中时,我得到了未定义的数据 附件是代码和结果的照片: 为什么usestate不接受来自数据的状态更改?附件是我的代码: import React,{useState,useffect}来自“React” 从“./

我正在使用react和mongoose/mongo数据库。在页面加载时,我执行一个API调用并接收一个对象数组(它们是带有标题、描述等的“帖子”)。我试图映射数据,以便在单独的卡片上动态显示帖子信息。我可以从API调用中获取数据,但是当我尝试将状态更改为对象数组并将其记录到控制台日志中时,我得到了未定义的数据

附件是代码和结果的照片:

为什么usestate不接受来自数据的状态更改?附件是我的代码:

import React,{useState,useffect}来自“React”
从“./utils/API”导入API
常量Home=()=>{
const[PostObject,setPosts]=useState({
标题:“,
说明:“,
图像:“
})
const[PostList,setList]=useState()
useffect(()=>{
检索职位()
}, [])
常量handleInputChange=(e)=>{
e、 预防默认值()
setPosts({…PostObject[e.target.name]:e.target.value})
}
const createPost=(e)=>{
e、 预防默认值()
setPosts({…PostObject,标题:,描述:,图像:})
API.addPost(PostObject)
。然后(retrievePosts())
}
const retrievePosts=()=>{
API.getPost()
。然后(res=>{
console.log(res.data);
设置列表(资源数据)
console.log(PostList);
})
}
为什么usestate不接受来自数据的状态更改?随附的是我的代码:

因为您在
useffect
中附加了一个空的依赖项数组,如下所示:

useEffect(() => {
        retrievePosts()
    }, [])
如果传递空的依赖项数组,此useEffect将只调用一次。如果要在每次数据更改后运行
useEffect
,则必须将数据传递到依赖项数组:

useEffect(() => {
            retrievePosts()
        }, [data /*i.e PostList*/])
但是,请注意不要无限次地重新渲染组件

还有一件事:

我可以从API调用中获取数据,但是当我尝试将状态更改为对象数组并将其记录到控制台日志中时,我得到了未定义的数据


setState
是一个异步调用。在调用
setData
后不能立即记录数据。请查看文章或to,看看它们是否有帮助。然后(retrievePosts())应该是
。然后(retrievePosts)
@CertainPerformance,更正了更改。仍然未定义。请将setState调用排入队列,因此不会立即更新,它将更新状态并重新呈现组件,以便使用新数据绘制组件