Reactjs React Redux+无限滚动=重新呈现整个列表?
新的反应,我正试图使用这个组件集成无限滚动到我的列表组件使用redux 然而,我面临的问题是,当我向下滚动到列表底部时,它会成功加载更多项目,但它似乎会重新呈现整个列表,而不是仅将新项目呈现到列表底部。这也会导致窗口回滚到顶部,这不是我所期望的 你知道怎么了吗?把我的代码贴在下面:Reactjs React Redux+无限滚动=重新呈现整个列表?,reactjs,react-redux,Reactjs,React Redux,新的反应,我正试图使用这个组件集成无限滚动到我的列表组件使用redux 然而,我面临的问题是,当我向下滚动到列表底部时,它会成功加载更多项目,但它似乎会重新呈现整个列表,而不是仅将新项目呈现到列表底部。这也会导致窗口回滚到顶部,这不是我所期望的 你知道怎么了吗?把我的代码贴在下面: import React, { useEffect } from 'react'; import './ItemList.sass'; import { connect } from 'react-redux'; i
import React, { useEffect } from 'react';
import './ItemList.sass';
import { connect } from 'react-redux';
import { fetchItems } from '../../../actions/itemListActions'
import ItemListing from './ItemListing'
//import InfiniteScroll from 'react-infinite-scroll-component';
import InfiniteScroll from 'react-infinite-scroller';
const ItemList = ({ items, fetchItems }) => {
const itemsPerLoad = 15;
useEffect(() => {
if (items && !items.isNew) {
return;
}
fetchItems({
offset: 0,
limit: 15,
isNew: true,
sort: null,
reverse: null,
filters: {},
search: null
})
}, [])
const loadMore = () => {
console.log("Loading more");
if (items.isFetching) {
return;
}
if (items.isNew) {
return;
}
fetchItems({
offset: items.data.length,
limit: itemsPerLoad,
isNew: false,
sort: items.sort,
reverse: items.reverse,
filters: items.filters,
search: items.search
});
}
return (
<div className="item-list">
<div>Total items: {items.total}</div>
{items.isFetching ? (
<div>Loading..</div>
) : items.error ? (
<div>An error occured. Please try again later.</div>
) : (
<InfiniteScroll
loadMore={loadMore}
hasMore={items.total > items.data.length}
loader={<div key={0}>Loading...</div>}
initialLoad={false}
>
{items.data &&
items.data.map(item =>
<ItemListing
key={item.id}
item={item}>
</ItemListing>
)}
</InfiniteScroll>
)}
</div>
);
}
const mapStateToProps = state => {
return {
items: state.itemList.items
}
}
const mapDispatchToProps = dispatch => {
return {
fetchItems: (params) => dispatch(fetchItems(params))
}
}
export default connect(mapStateToProps,mapDispatchToProps)(ItemList);
以下是一些可以尝试的东西: 确保定义了item.id。否则,React将重新呈现整个列表。 在获取下一组项时,请注意,有一个三元条件items.isFetching?items.error块:无限滚动。这将导致在每次提取时重新装载。
以下是一些可以尝试的东西: 确保定义了item.id。否则,React将重新呈现整个列表。 在获取下一组项时,请注意,有一个三元条件items.isFetching?items.error块:无限滚动。这将导致在每次提取时重新装载。
您列出的第二个原因修复了该问题。花了好几个小时研究这件事,我应该知道它会是这么小的东西。非常感谢你!您列出的第二个原因修复了该问题。花了好几个小时研究这件事,我应该知道它会是这么小的东西。非常感谢你!