gpt4 book ai didi

javascript - 在滚动条上加载更多数据

转载 作者:行者123 更新时间:2023-11-30 19:44:57 24 4
gpt4 key购买 nike

我有一个带有搜索输入的页面,一旦用户点击提交结果就会出现。

可能会有很多结果(通常不会,但可能有数千个结果),我不想一次加载所有结果,我怎样才能从他的 API 中获取几十个并获取更多结果用户向下滚动,正确的方法是什么?我在想 Lodash throttle 可以适应,但我找不到一个很好的例子。

这是我的 react 组件:

const getContacts = async (searchString) => {
const { data: contactsInfo} = await axios.get(`api/Contats/Search?contactNum=${searchString}`);
return contactsInfo;
};
export default class Home extends React.Component {
state = {
contactsInfo: [],
searchString: '',
};

handleSubmit = async () => {
const { searchString } = this.state;
const contactsInfo = await getContacts(searchString);
this.setState({ contactsInfo });
};

onInputChange = e => {
this.setState({
searchString: e.target.value,
});
};

onMouseMove = e => {

};

render() {
const { contactsInfo, searchString, } = this.state;
return (
<div css={bodyWrap} onMouseMove={e => this.onMouseMove(e)}>
<Header appName="VERIFY" user={user} />
{user.viewApp && (
<div css={innerWrap}>
<SearchInput
searchIcon
value={searchString || ''}
onChange={e => this.onInputChange(e)}
handleSubmit={this.handleSubmit}
/>
{contactsInfo.map(info => (
<SearchResultPanel
info={info}
isAdmin={user.isAdmin}
key={info.id}
/>
))}
</div>
)}
<Footer />
</div>

);
}
}

最佳答案

如果 API 支持分页,那么您可以使用 React-Infinite-Scroll .看起来像这样

  <div style="height:700px;overflow:auto;">
<InfiniteScroll
pageStart={0}
loadMore={loadFunc}
hasMore={true || false}
loader={<div className="loader">Loading ...</div>}
useWindow={false}>
{items}
</InfiniteScroll>
</div>

但是,如果 REST API 不支持它,您仍然可以加载数据并使用相同的库将它们分块显示给用户,但您需要自己处理当前的加载状态。

关于javascript - 在滚动条上加载更多数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com