reactjs - React Load More 使用 Hooks
问题描述
我尝试对Load More
如下所示的数据列表进行操作:
import React, { useState, useEffect } from "react";
import { render } from "react-dom";
import axios from "axios";
import "./style.css";
const App = () => {
const LIMIT = 2;
const [data, setData] = useState([]);
const [isLoading, setLoading] = useState(false);
const [page, setPage] = useState(1);
const loadData = async (skip = 1, limit = LIMIT) => {
const URL = "https://reqres.in/api/users";
const headers = {
"Content-Type": "application/json",
Accept: "application/json"
};
const params = {
page: skip,
per_page: limit
};
const a = await axios.get(URL, { params, headers });
// const b = [...new Set([...data, ...a.data.data])]; <-- setting this will thrown error
setData(a.data.data);
setLoading(false);
};
useEffect(() => {
setLoading(true);
loadData(page);
}, [page]);
useEffect(() => {
console.log("page", page, "data", data.length);
}, [page, data]);
const doReset = evt => {
evt.preventDefault();
setPage(1);
};
const doLoadMore = evt => {
evt.preventDefault();
setPage(page + 1);
};
return (
<div className="container">
<h1>Listing</h1>
<button className="btn text-primary" onClick={evt => doReset(evt)}>
Reset
</button>
<button className="btn text-primary" onClick={evt => doLoadMore(evt)}>
Load More
</button>
{isLoading && <p>Loading..</p>}
{!isLoading && (
<ul>
{data.map(a => (
<li key={a.id}>
{a.id}. {a.email}
</li>
))}
</ul>
)}
</div>
);
};
render(<App />, document.getElementById("root"));
一个完整的工作示例在这里。我认为这段代码应该可以工作,但不是。
const a = await axios.get(URL, { params, headers });
const b = [...new Set([...data, ...a.data.data])];
setData(b);
所以请帮忙,如何在 React Hooks 中加载更多?
解决方案
我通过更改为您的示例来工作:
const b = [...data, ...a.data.data];
setData(b);
推荐阅读
- php - 在使用ajax 调用追加数据时,只返回jquery 和php 中数据库的第一行?
- python - 使用 BeautifulSoup 查找名为 data-stats 的属性
- python - 字符串切片和空字符串结果
- jquery - 向上滚动时的粘性标题,但补偿初始绝对定位
- python - virtualenv 是用于运行时环境还是开发环境?Virtualenv 与容器
- java - 在android中添加两个MutableList
- python - 导航到没有用户名的文件
- functional-programming - 如何编写更清晰的函数式代码?
- entity-framework-6 - EF 6.0 如何取消删除和修改属性?
- python - 从文件中提取 CSS 值并使其成为字典