如果我在函数内部使用变量而不是使用react状态对象,则会表现出怪异的提取效果。如果我删除了const响应.....和const数据....行的东西就很好了,但是如果我使用fetch函数并使用普通变量而不使用状态,那是行不通的。为什么呢?
Object is showing normal if i log it from inside the function
Object is also showing normal if i use const variable
Object is showing like an empty object if i log it from outside the function
但是此代码可以正常工作。.
const [services, setServices] = useState([]);
useEffect(() => {
const API_URL = "http://localhost:8080/getServiceName/3";
const loadData = async () => {
const apiData = [];
const response = await fetch(API_URL);
const data = await response.json();
data.services.map(service => (
apiData.push(service.service_name)
));
setServices(apiData);
}
loadData();
}, [location])
请注意,我可以为const变量(代码中的const dummyLocation {和图像中的const apiData)添加更多的值!!!
答案 0 :(得分:-1)
loadData();
是异步的,所以如果这样做
loadData()
console.log(dummyLocation)
然后console.log
会在loadData
完成之前发生。您可能只想做
loadData().then(() => console.log(dummyLocation))
关于您为什么可以这样做的问题:
const apiData = [];
// ...
apiData.push(service.service_name)
原因是const
并不意味着变量本身不能更改,而是永远不会重新分配变量-您不能这样做:
const apiData = [];
apiData = [service.service_name];
因为正在为其分配一个新数组。