【发布时间】:2021-03-10 12:48:45
【问题描述】:
我是 React 新手,我对 useState hook 有一些疑问。我最近正在开发一个基于 API 的配方反应应用程序。我面临的问题是,当我在搜索表单中提交某些内容时,应该会发生状态更改,但是状态没有改变,但如果我重新提交表单,状态就会改变。
import React,{useState,useEffect} from "react";
import Form from "./componnents/form";
import RecipeBlock from "./componnents/recipeblock"
import './App.css';
function App() {
const API_id=process.env.REACT_APP_MY_API_ID;
const API_key=process.env.REACT_APP_MY_API_KEY;
const [query,setQuery]=useState("chicken");
const path=`https://api.edamam.com/search?q=${query}&app_id=${API_id}&app_key=${API_key}`
const [recipe,setRecipe]=useState([]);
useEffect(() => {
console.log("use effect is running")
getRecipe(query);
}, []);
function search(queryString){
setQuery(queryString);
getRecipe();
}
async function getRecipe(){
const response=await fetch(path);
const data=await response.json();
setRecipe(data.hits);
console.log(data.hits);
}
search() 函数中的 queryString 保存表单输入的值,每次我提交表单时,该值都会正确出现,但 setQuery(queryString) 不会更改查询值或状态,如果我重新提交表单,它会更改状态。
【问题讨论】:
标签: javascript reactjs react-hooks use-state