我想在我的应用程序上实现无限滚动之类的东西。这是我的代码:
import React, { useState, useEffect } from "react";
import AsyncSelect from "react-select/async";
const WithPromises = () => {
const [page, setPage] = useState(1);
const [allData, setAllData] = useState([]); //here should be added all data
const [scrolll, setScrolll] = useState();
const filterData = (inputValue) => {
const req = fetch(
`https://jsonplaceholder.typicode.com/todos?_limit=15&_page=${page}`
)
.then((response) => response.json())
.then((res) => {
const fetchedData = res.map(({ title }) => {
return {
label: title,
value: title
};
});
page > 1 && setAllData([...allData, ...fetchedData]);
return [...fetchedData, allData];
});
return req;
};
const promiseOptions = (inputValue) => {
return filterData(inputValue);
};
const scroll = (e) => {
console.log(e);
setScrolll(e);
promiseOptions();
};
useEffect(() => {
setPage(page + 1);
}, [scrolll, page]);
return (
<AsyncSelect
cacheOptions
onMenuScrollToBottom={scroll}
isClearable={true}
isSearchable={true}
defaultOptions
loadOptions={promiseOptions}
/>
);
};
export default WithPromises;
您怎么看,当滚动部分位于底部时,我会增加页面:setPage(page + 1);
。这个值被添加到 api 中https://jsonplaceholder.typicode.com/todos?_limit=15&_page=${page}
。
此外,我想在这里Concat的每个滚动的所有数据:return [...fetchedData, allData]
。最后我需要实现这样的事情:用户向下滚动并在滚动部分添加新值,但以前不应该消失,所以当滚动条位于底部时,每次滚动时都应该添加新数据选择的底部。
问题:我无法实现我上面描述的内容,我也不知道这个问题。
问题:如何解决我的情况?
演示:https : //codesandbox.io/s/codesandboxer-example-forked-zsj6i?file=/ example.js: 0-1262