Javascript React hook setState导致无限渲染
我想知道为什么当我从后端API设置它的值时,它会被无限渲染卡住。 我不想使用useffect()停止它,因为我需要在赋值后使用它重新渲染 代码:Javascript React hook setState导致无限渲染,javascript,reactjs,react-native,react-redux,Javascript,Reactjs,React Native,React Redux,我想知道为什么当我从后端API设置它的值时,它会被无限渲染卡住。 我不想使用useffect()停止它,因为我需要在赋值后使用它重新渲染 代码: import React, { useState, useEffect } from 'react'; // import FormCheckLabel from 'react-bootstrap/FormCheckLabel'; import './CheckForms.css'; // import Scrollspy from '../Scrol
import React, { useState, useEffect } from 'react';
// import FormCheckLabel from 'react-bootstrap/FormCheckLabel';
import './CheckForms.css';
// import Scrollspy from '../Scrollspy/Scrollspy';
import axios from 'axios';
const CheckForms = () => {
const [menu, setMenu] = useState([]);
const fetchList = async () => {
try {
const res = await axios.get(`http://localhost:5000/api/items`);
const list = res.data.response;
// setMenu(list); // <-- This is causing ulimited renders ! //
} catch (err) {
console.log(err.response);
};
};
fetchList();
console.log("something");
return (
<div>
</div>
)
}
export default CheckForms;
import React,{useState,useffect}来自“React”;
//从“react引导/FormCheckLabel”导入FormCheckLabel;
导入“./CheckForms.css”;
//从“../Scrollspy/Scrollspy”导入Scrollspy;
从“axios”导入axios;
常量CheckForms=()=>{
const[menu,setMenu]=useState([]);
常量fetchList=async()=>{
试一试{
const res=等待axios.get(`http://localhost:5000/api/items`);
常量列表=res.data.response;
//setMenu(list);//您不能将fetchList();
放在useffect()之外,因为
当安装组件时,调用fetchList()
,它设置状态和组件重新加载
再次执行fetchList()
,并再次设置状态和重新排序。它形成一个无限循环
你必须这样做
useffect(()=>fetchList(),[])
或者在事件上执行它您不能将fetchList();
放在useffect()
之外,因为
当安装组件时,调用fetchList()
,它设置状态和组件重新加载
再次执行fetchList()
,并再次设置状态和重新排序。它形成一个无限循环
你必须这样做
useffect(()=>fetchList(),[])
或者在事件上执行它您需要useffect
,否则每次重新渲染时都会调用fetchList
因此,您的无限循环来自:
fetchList()
=>setMenu()
=>render()
=>fetchList()
=>setMenu()
等等
我不想用useffect()来阻止它,因为我需要用它来重新
指定值后渲染
useffect(callback,[triggers])
第二个参数正是为了实现这一点,根据道具/状态更改来控制重新渲染的时间。为此,您需要useffect
。否则每次重新渲染时都会调用fetchList
因此,您的无限循环来自:
fetchList()
=>setMenu()
=>render()
=>fetchList()
=>setMenu()
等等
我不想用useffect()来阻止它,因为我需要用它来重新
指定值后渲染
useffect(callback,[triggers])
第二个参数正好用于此,根据道具/状态更改控制重新渲染的时间