【发布时间】:2019-12-10 05:35:54
【问题描述】:
我正在使用 React Hooks 和 useEffect 从 API 获取数据。我需要连续打 2 个电话。如果我直接 console.log 响应,它会显示正确的响应,但是当我 console.log 状态时,它是空的并且没有更新。我做错了什么?
const [describeFields, setDescribeFields] = useState([]);
useEffect(() => {
const fetchData = async () => {
await axios
.all([
axios.get("someUrl"),
axios.get("someotherUrl")
])
.then(
axios.spread((result1, result2) => {
console.log(result1.data.result.fields); //shows correct response
setDescribeFields(result1.data.result.fields);
console.log(describeFields); //shows empty array
})
);
};
fetchData();
}, []);
【问题讨论】:
-
请注意,有plans to remove
axios.allandaxios.spread,因为它只是替换Promise.all和扩展运算符。 -
另外,
async/await在这里没用,因为您已经在使用 Promise。 -
@EmileBergeron,我怎样才能写得正确?
-
useEffect(() => { Promise.all([axios.get(), axios.get()]).then(/**/); }, []);
标签: javascript reactjs