Reactjs 使用效果无限重招标
我正在尝试在状态更改后重新加载组件,我是这样做的:Reactjs 使用效果无限重招标,reactjs,react-hooks,Reactjs,React Hooks,我正在尝试在状态更改后重新加载组件,我是这样做的: const [items, setItems] = useState([]); useEffect(() => { console.log("I am rerendering") const displayNotebook = async () => { const reponse = await axios({// URL etc...}, }); setIte
const [items, setItems] = useState([]);
useEffect(() => {
console.log("I am rerendering")
const displayNotebook = async () => {
const reponse = await axios({// URL etc...},
});
setItems(reponse.data); // add data to the list
};
displayNotebook()
},[items]);
我在地图上同样地传递日期
const workspaceCard = items.map((msg) => (
<WorkspaceContent
message={msg.content}
/>));
const workspaceCard=items.map((msg)=>(
));
问题是组件处于无限重排序中,我可以使用空数组,但这不是我想要的,我尝试在每次状态更新时重新排序组件
我搜索并找到了这个答案,但对我没有帮助。正如Gaëtan已经指出的那样,您的逻辑有一个循环:在您的效果中,您正在设置项目,但您也在指示每当项目更改时,效果应该重新运行。因此出现了循环。修复很简单,如果您不需要/不想在项目更改时重新运行效果,只需删除对项目的依赖:
useEffect(() => {
// ...
},[]); // items removed
您需要修改您的逻辑,您正在触发一个效果,以便在项目更新时更新项目