react pull to refresh react component
npm install rmc-pull-updown-to-refreshAn accessible and easy component for ReactJS
8kb大小, 灵活自由,高度可配置, 支持局部滚动。
npm
``sh`
npm i rmc-pull-updown-to-refresh -S`
yarnsh`
yarn add rmc-pull-updown-to-refresh
ssh
git clone https://github.com/eightfeet/rmc-pull-updown-to-refresh.github
cd rmc-pull-updown-to-refresh
npm install
npm run buildcd example npm install
npm run start
``js
import React, { useCallback, useState } from 'react';
import PullToRefresh from 'rmc-pull-updown-to-refresh';function App() {
const [list, setList] = useState([1,2,3,4,5]);
const onPullDown = useCallback(
() =>
new Promise((res, rej) => {
setTimeout(() => {
rej('暂无数据');
setList([]);
}, 3000);
}),
[]
);
const onPullUp = useCallback(
() =>
new Promise((res, rej) => {
setTimeout(() => {
if (list?.length < 30) {
setList((data) => {
const newData = [...data];
for (
let index = list.length;
index < list.length + 15;
index++
) {
newData.push(index);
}
return newData;
});
res(null);
} else {
rej('别扯了!这是底线');
}
}, 3000);
}),
[list]
);
return (
className="list"
loadingClassName="background"
onPullUp={onPullUp}
onPullDown={onPullDown}
pullDownText={
下拉刷新
}
loadingText={'请稍候'}
>
{list.map((item) => (
{item}
))}
{list.length ? null : 找不到数据}
);
}export default App;
`Api
`typescript
interface Props {
disablePullDown?: boolean; // 禁止下拉
disablePullUp?: boolean; // 禁止上拉
pullDownText?: React.ReactNode; // 下拉时展示的文本
pullUpText?: React.ReactNode; // 上拉时展示的文本
onPullUp?: () => Promise; // 上拉方法,要求返回promise,reject返回错误信息
onPullDown?: () => Promise; // 下拉方法,要求返回promise,reject返回错误信息
className?: string; //样式
children: React.ReactNode;
loadingClassName?: string; // 加载条样式
loadIcon?: React.ReactNode; // 加载图标
loadingText?: React.ReactNode; // 加载文本
pullIcon?: React.ReactNode; // 拉动时方向图标
}
``
