-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathApp.js
More file actions
73 lines (61 loc) · 1.88 KB
/
App.js
File metadata and controls
73 lines (61 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import "./App.css";
import InfiniteScroll from "react-infinite-scroll-component";
import { useEffect, useState } from "react";
import Comment from "./components/Comment";
import Loader from "./components/Loader";
import EndMsg from "./components/EndMsg";
function App() {
const [items, setItems] = useState([]);
const [hasMore, sethasMore] = useState(true);
const [page, setpage] = useState(2);
useEffect(() => {
const getComments = async () => {
const res = await fetch(
`https://rss.dinamalar.com/internal/wnews.asp?id=31`
// For json server use url below
// `http://localhost:3004/comments?_page=1&_limit=20`
);
const data = await res.json();
setItems(data);
};
getComments();
}, []);
const fetchComments = async () => {
const res = await fetch(
`https://rss.dinamalar.com/internal/wnews.asp?id=31`
// For json server use url below
// `http://localhost:3004/comments?_page=${page}&_limit=20`
);
const data = await res.json();
return data;
};
const fetchData = async () => {
const commentsFormServer = await fetchComments();
setItems([...items, ...commentsFormServer]);
if (commentsFormServer.length === 0 || commentsFormServer.length < 20) {
sethasMore(false);
}
setpage(page + 1);
};
return (
<>
<h2 className="card-title text-center mt-2 h5"> Dinamalar Listing Page - Infinite Scroll </h2>
<InfiniteScroll
dataLength={items.length} //This is important field to render the next data
next={fetchData}
hasMore={hasMore}
loader={<Loader />}
endMessage={<EndMsg />}
>
<div className="container">
<div className="row m-2">
{items.map((item) => {
return <Comment key={item.guid} item={item} />;
})}
</div>
</div>
</InfiniteScroll>
</>
);
}
export default App;