gpt4 book ai didi

javascript - React Hooks 无限循环

转载 作者:行者123 更新时间:2023-11-28 11:43:36 27 4
gpt4 key购买 nike

所以我有一个项目组件,它从我的项目上下文中获取数据。我正在尝试选择该对象数组中的第一个对象并将其传递到新状态。

项目组件

const projects = useContext(ProjectContext) // array of objects from context
const [selected, setSelected] = useState({}) // where i will pass projects[0]
const selectProj = (data) => {
setSelected(data) // INFINITE LOOP ERROR
}

if (projects.length > 0) {
selectProj(projects[0])
}

所以我有点迷失在这里要做什么。

更新:我使用的答案

const projects = useContext(ProjectContext) // array of objects
const [selected, setSelected] = useState({})

const selectProj = (data) => {
setSelected(data)
}

useEffect(() => {
if (projects.length > 0) {
selectProj(projects[0])
}
}, [projects])

最佳答案

您将陷入无限循环,因为 setSelected 会导致重新渲染,并且在重新渲染时 projects.length 再次大于 0,这会导致另一个重新渲染,依此类推。

避免这种情况的一种方法是仅在尚未选择项目时调用 selectProj:

if (!selected && projects.length > 0) {
selectProj(projects[0]);
}

关于javascript - React Hooks 无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58966685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com