在父组件中,open和setOpen状态被传递给子组件,在useEffect中,open作为fetchData和dependency被包含。在子组件中,open作为依赖添加到useEffect中的其他fetchData中。但是,getApi()在子组件中被取消。如果您直接在子组件中声明open和setOpen状态,它将正常工作,但必须使用父对象的开放依赖项更新数据。
parent.tsx
const [open, setOpen] = useState(false);
const [post, setPost] = useState([]);
const fetchData = async() => {
const res = await getPost();
setPost(res);
useEffect(() => {
fetchData();
}, [open]);
<Child open={open} setOpen={setOpen} />
个字符
1条答案
按热度按时间lmyy7pcs1#
在子组件中,该问题是由useEffect中的open依赖引起的。为了防止在父组件中open发生变化时取消API调用,您可以为open使用ref。
字符串