【发布时间】:2021-07-14 22:06:05
【问题描述】:
您好,我尝试将数据从我的数据库保存到我的变量 selectedRestaurant。我在 useEffekt 挂钩中使用 setSelectedrestaurant,但它不会更新我的变量。我得到一个 null 值。
这是我的代码
import React, { useContext, useEffect, useState } from 'react';
import { useParams } from 'react-router';
import RestaurantFinder from '../api/RestaurantFinder';
import { RestaurantsContext } from "../context/RestaurantsContext";
import Reviews from '../components/Reviews';
import StarComponent from '../components/StarComponent';
import AddReview from '../components/AddReview';
import Test from '../components/Test';
const RestaurantDetailedPage = (props) =>{
//const{ selectedRestaurant, setSelectedRestaurant}= createContext(RestaurantsContext);
const[ selectedRestaurant, setSelectedRestaurant]= useState(null);
const {id} = useParams();
useEffect(()=>{
const fetchData = async(id)=>{
const result = await RestaurantFinder.get("/"+id);
console.log(result);
setSelectedRestaurant(result.data.data);
console.log(selectedRestaurant);
}
fetchData(id);
},[]);//Wichtig, damit es nur 1x
/*
useEffect(()=>{
console.log("useEffect2");
console.log(selectedRestaurant);
},[selectedRestaurant]);
*/
return(
<div>{selectedRestaurant && (
<>
<div>{<AddReview/>}</div>
<div></div>
</>
)}
</div>
)
}
export default RestaurantDetailedPage;
我知道 useEffect 是异步的,所以我尝试使用 await setSelectedRestaurant(result.data.data)
但它没有用。我还定义了两个只能调用一次的 useEffects。一个用于更改,另一个用于更新,但两个 useEffects 都被调用了两次。我不知道为什么以及如何解决它。
希望你能帮助我
【问题讨论】:
标签: reactjs axios react-hooks use-state