Javascript 如何不丢失值​;在React中的数组?

Javascript 如何不丢失值​;在React中的数组?,javascript,reactjs,select,infinite-loop,Javascript,Reactjs,Select,Infinite Loop,我需要在react上安装动态“select”,但我遇到了一个问题 我正在使用“for”来调用API,但是在执行“for”时,我会丢失以前的值 如何保持这些值 我试图这样做,但它生成了一个无限循环: const Form = (props) => { const [makes, setMakes] = useState([]); const [models, setModels] = useState([]); useEffect(() => { api.get(

我需要在react上安装动态“select”,但我遇到了一个问题

我正在使用“for”来调用API,但是在执行“for”时,我会丢失以前的值

如何保持这些值

我试图这样做,但它生成了一个无限循环:

const Form = (props) => {
  const [makes, setMakes] = useState([]);
  const [models, setModels] = useState([]);

  useEffect(() => {
    api.get("Make").then((response) => {
      setMakes([...response.data]);
    });
  }, []);

  async function handleModels() {
    for (let i = 0; i < makes.length; i++) {
      const response = await api.get(`Model?MakeID=${makes[i]["ID"]}`);
      const model = response.data;
      setModels([...models, model]);
    }
  }

  if (makes.length) {
    handleModels();
  }
const Form=(道具)=>{
const[makes,setMakes]=useState([]);
const[models,setModels]=useState([]);
useffect(()=>{
api.get(“Make”)。然后((响应)=>{
setMakes([…response.data]);
});
}, []);
异步函数handleModels(){
for(设i=0;i

谢谢!

您需要传递一个在当前状态下接受的函数:

setModels((models)=> [...models, model]);
或者更好,将结果推送到数组,然后只更新一次状态:

async function handleModels() {
  let allModels = []
  for (let i = 0; i < makes.length; i++) {
    const response = await api.get(`Model?MakeID=${makes[i]["ID"]}`);
    const model = response.data;
    allModels.push(model);
  }
  setModels(allModels);
}
异步函数handleModels(){
让所有模型=[]
for(设i=0;i
见工作示例: