我收到警告:
js:86注意事项:无法对尚未装入的组件执行React状态更新。这表示呈现函数中存在副作用,稍后异步调用尝试更新该组件。请将此工作移到useEffect。
和
未捕获的类型错误:无法读取未定义的属性(阅读'review')
setReviews在我的axios函数中也不起作用
import React, { useState } from "react";
import axios from "axios";
function GetRandomReview(props) {
const [reviews, setReviews] = useState([]);
axios.get("http://localhost:7000/reviews").then((response) => {
setReviews(response.data);
})
let j = Math.floor((Math.random() * reviews.length));
console.log(reviews);
return (
<div className={props.active ? "carousel-item container-fluid active" : "carousel-item container-fluid"}>
<h2 className=" testimonial-text">
{reviews[j].review}
</h2>
<em>
{reviews[j].name}
</em>
</div>
)
}
export default GetRandomReview;
`
我尝试使用UseEffect,但不起作用
1条答案
按热度按时间mmvthczy1#
你必须使用
useEffect
来调用你的api,这将首先挂载你的组件,然后调用你的api,成功后,你的状态将更新,这将呈现数据。给你
这将抛出错误,因为你试图引用一个还不存在的键。如果你想让你的组件稍后呈现,但先获取,然后使用
useLayoutEffect
挂钩,而不是useEffect
挂钩。