【发布时间】:2021-12-06 22:03:19
【问题描述】:
我想一次只加载 10 个帖子,当我按下加载更多按钮时,我想在前 10 个帖子的基础上再获得 10 个帖子。截至目前,当我按下加载更多时,我得到了我的前 10 个帖子,我失去了我的前 10 个并获得了第二个 10。我正在使用 redux,所以它对我来说有点困惑。我在这里读到过在我的减速器中使用concat,但它仍然不起作用。也许我的语法错误?那个帖子是 2017 年的。
const [page, setPage] = useState(1);
const dispatch = useDispatch();
const { loading, posts } = useSelector((state) => state.posts);
useEffect(() => {
dispatch(getPosts(page));
}, [dispatch, page]);
return (
<Container className="mt-4" style={{ maxWidth: "600px" }}>
{loading ? (
<Loader />
) : (
<>
{posts.map((post) => (
<Col key={post._id} className="m-2 p-2">
<Post post={post} />
</Col>
))}
<Button onClick={() => setPage(page + 1)}>Load More</Button>
</>
)}
</Container>
);
};
我的减速器
export const postsReducer = (state = { posts: [] }, action) => {
switch (action.type) {
case PC.FETCH_ALL_POSTS_REQUEST:
return { loading: true, posts: [] };
case PC.FETCH_ALL_POSTS_SUCCESS:
return {
loading: false,
posts: state.posts.concat(action.payload),
};
case PC.FETCH_ALL_POSTS_FAIL:
return { loading: false, error: action.payload };
【问题讨论】:
标签: reactjs redux pagination infinite-scroll