javascript - 确定用户是否滚动到底部不使用反应
问题描述
当用户滚动到底部时,我正在关注此博客以加载更多数据,但这似乎没有发生。
https://blog.logrocket.com/infinite-scroll-techniques-in-react-adcfd7ff32bd/
这是我使用的代码,但这似乎没有发生。我没有看到任何与加载更多工作相关的调试器或控制台日志。
class MyOrders extends React.Component {
constructor(props) {
super(props);
this.state = {
loader: true,
data: "",
page: 1,
};
}
componentDidMount() {
// Detect when scrolled to bottom.
console.log("this.ref", this.refs.myscroll);
this.refs.myscroll.addEventListener("scroll", () => {
console.log("working");
if (
this.refs.myscroll.scrollTop + this.refs.myscroll.clientHeight >=
this.refs.myscroll.scrollHeight
) {
this.loadMore();
}
});
this.getMyOrders();
}
loadMore = () => {
debugger;
this.setState(
{
page: this.state.page + 1,
},
() => {
console.log("page", this.state.page);
}
);
};
render() {
const { data } = this.state;
let results = data && data.data && data.data.results;
return (
<MainDiv >
<Header color="#436ab2" backPage="/dashboard" headerText={'My Orders'} title="Working" />
<Body ref="myscroll">
<HeaderDiv>Your Orders</HeaderDiv>
{results &&
results.map(item => {
let template_color = item && item.offer && item.offer.template_color
return (
<CardMainDiv color={template_color}>
<FirstDiv>
<LogoDiv>
{/*<img src={item && item.offer && item.offer.logo} />*/}
<Logo src={item && item.offer && item.offer.logo} />
</LogoDiv>
<DateDiv>
<OrderDate>Order Date</OrderDate>
<OrderDateValue>{modifyDate(item.created_at)}</OrderDateValue>
</DateDiv>
</FirstDiv>
<SecondDiv>{item && item.offer && item.offer.offer_summary}</SecondDiv>
<ThirdDiv>
<PaymentDiv>
<Paid>Amount Paid</Paid>
<Amount>₹{item && item.total_amount}</Amount>
</PaymentDiv>
<ViewDetailsDiv onClick={() => this.handleMyOffers(item.offer_transaction_id)}>
<DetailsDiv>VIEW DETAILS</DetailsDiv>
</ViewDetailsDiv>
</ThirdDiv>
</CardMainDiv>
)
})}
</Body>
{this.state.loader && <OverlayLoader />}
</MainDiv>
);
}
}
解决方案
在将 ref 传递给子组件时尝试使用react forwardref ,例如:
const Child = React.forwardRef((props, ref) => (<div ref={ref}>something here</div>))
class Parent extends React.Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
}
render() {
return (
<div>
<Child ref={this.myRef} />
...
</div>
);
}
}
推荐阅读
- linux - 外部服务登录链接 asp core
- javascript - 向 ajax url 提供 csv 文件输入以显示在 html 表上
- security - 除了 Meltdown 和 Spectre 之外,还有其他处理器漏洞吗?
- java - JAVA 贪吃蛇游戏错误。蛇在 3 步后停止
- mysql - 带有列表变量的熊猫查询
- vba - 根据单元格内容更改 Word 表格单元格背景颜色。
- python - 我可以将 Django 模型对象作为单例获取吗?
- android - 以编程方式更改键盘输入语言
- python - 如何重塑 pandas 中的数据以使用 Choropleth 进行绘图
- node.js - 显示图像时 Object.parse 位置 0 处 JSON 中的意外标记