我编写了一个名为 component1 的组件,如下所示,它位于父组件内部。component1 位于页面底部,除非用户向下滚动到该区域,否则我不想呈现它。因此,我使用“react-intersection-observer”中的 InView 来确定该区域是否在视图中。如果是这样,则获取数据并渲染数据。但我收到警告:警告:无法从不同组件的函数体内更新组件。收到此警告的原因是什么?是不是因为我在组件中设置了setInView?
<parent>
<component4 />
<component3 />
<component2 />
<component1 />
</parent>
const component1 = () => {
const [inView, setInView] = React.useState(false);
const [loading, error, data] = fetchData(inView); // hook to fetch data
// data is an array
const content = data.map(d => <div>{d}</div>);
const showEmpty = true;
if (data) {
showEmpty = false;
}
return (<InView>
{({ inView, ref }) => {
setInView(inView);
return (
<div ref={ref}>
<div>{!showEmpty && content}</div>
</div>
)
</InView>);
}