【发布时间】:2021-01-12 06:08:10
【问题描述】:
假设我在 React 中获取了一个 API,并在数据列表中设置了它的值
const [dataLists, setdataLists] = useState([])
const fetchAPI = () => {
axios.get(`/api/fetchDetails/fetchData/${comp_id}`).then((data) => {
setdataLists(data.data);
}).catch(error => {
console.log(error);
})
}
useEffect(() => {
fetchAPI()
}, [])
console.log(dataLists) # This prints first empty array and then the value is printed though I have
called after data has been set.
我想在调用 fetchAPI 函数并设置值后打印数据非空数组。由于空数组,我使用 dataLists 执行的任何操作都会给出未定义的错误,因为在开始时它会得到空数组,之后只会得到值。
如果需要更多信息,请告诉我。
【问题讨论】:
-
Axios 异步工作,设置数据集的一些默认值并在使用前检查数据集是否设置如下 if(dataset.length!=0)
-
useEffect仅在安装组件后调用。因此,您的第一个console.log将始终打印您传递给useState的初始状态。 -
@NareshTeli 抱歉,我不确定我是否听懂了您所说的。你能不能更清楚一点。什么可以设置为默认值?你的目的是什么?
-
@ShriharshaKL 那么你有什么目的需要做。因为我到现在都这样工作,所以我有点迷茫
-
由于代码是异步的,所以会先触发get函数,然后执行console.log语句,如果要打印,在axios.get()里面加上console.log .then((data)=>{console.log(data.data))}
标签: javascript node.js reactjs react-hooks